• 0
prince of egypt

حفظ البيانات فى قواعد بيانات Sql Server ك Unicode Data وذلك باستخدام Sqlparameter

سؤال

السلام عليكــم ورحمـة الله وبركاتــه ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

اخوانى الكرام اعضاء المنتدى

اعتقد ان هذه المشكلة واجهت كتير من الاشخاص الذين يستعملون قواعد بيانات SQL Server لحفظ البيانات باللغة العربية او حتى باى لغة اخرى وهى ان البيانات لايتم حفظها بشكل سليم فى قاعدة البيانات وانما يتم حفظها بهذا الشهل ؟؟؟؟؟؟؟؟؟

وجدت ان الحل فى حفظ هذه البيانات بشكل unicode لاننا لا نملك تغيير Collation فى قواعد البيانات على السيرفر فضلا عن ان بعضها لا يدعم اللغة العربية ووجدت هذه الطريقة

ان نقوم بانشاء الحقول مثلا من نوع NvarChar او ما شابه ونقوم بتخزين البيانات ك unicode بهذه الطريقة

Insert into TblName(FileName) values(N'Value')

ولكن فى حالة استخذام البارميتر لا تنجح هذ الطريقة انا جربت اكثر من شكل مثل

 Dim SQLParam1 As New SqlParameter
SQLParam1.ParameterName = "@ArTitle"
SQLParam1.Value = TxtArabicTitle.Text
cmd.Parameters.Add(SQLParam1)

هذ الطريقة تحفظ البيانات بالطريقة العادية - حاولت اجرب الشكلين التاليين

 Dim SQLParam1 As New SqlParameter
SQLParam1.ParameterName = "@ArTitle"
SQLParam1.Value = "N'" & TxtArabicTitle.Text & "' "
cmd.Parameters.Add(SQLParam1)

والشكل الاخر

 Dim SQLParam1 As SqlParameter = New SqlParameter("@ArTitle", "N'" & TxtArabicTitle.Text & "' ")

الشكل الاول لم يخزن البيانات بطريقة صحيحة والثانى لم يقبله مترجم اللغة واعطى خطا

انا استخدم .Netframework 2.0 and SQL server Express 2005

اتمنى ان اجد حل هذه المشكلة عندكم

وشكرا جزيلا لكم

ودمتم بالف ود

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

أظن أنك نسيت تحديد عدد الحروف في النص الذي تريد زيادته في قاعدة البيانات. عدد الحروف في النص يتم تحديده عبر الخاصية SqlParameter.Size و النوع nchar كفاني لزيادة نص باللغة العربية في قاعدة بيانات SQL Server 2005. هذا كود مجرب على حقل من نوع nchar(255) ويعطي النتيجة المرجاة :

		Dim con As New SqlClient.SqlConnection(My.MySettings.Default.testConnectionString)
Dim cmd As New SqlClient.SqlCommand("Insert into arabic values (@name)", con)
Dim prm As SqlClient.SqlParameter
prm = cmd.CreateParameter()
prm.ParameterName = "@name"
prm.SqlDbType = SqlDbType.NChar
prm.Size = 255
prm.SqlValue = "نجحت العملية..."
cmd.Parameters.Add(prm)
Dim i As Integer
con.Open()
i = cmd.ExecuteNonQuery()
con.Close()
MsgBox("عدد الأسطر التي تمت زيادتها : " + i.ToString())

بالتوفيق...

تم تعديل بواسطه محمد رضى
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

الاستاذ محمد رضى

شكرا جزيلا لك رجزاك الله خير الجزاء

انا جربتها عندى علىالجهاز واشتغلت وهجربها على السيرفر وان شاء الله هتشتغل

بس انا عندى عامل الحقول من نوع Nvarchar

علشان كده اضفتالسطر ده فقط عندى

SQLParam1.SqlDbType = SqlDbType.NVarChar

شكرا مرة ثانية وربنا يوفقك فى كل حياتك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .