PDA

View Full Version : سوال: استفاده از N در هنگام استفاده از دستور Parameters.Addwithvalue



fa_karoon
سه شنبه 30 فروردین 1390, 15:16 عصر
سلام دوستان من Insert هام رو مثل کد زیر به صورت پارامتری نوشته ام


com.Parameters.AddWithValue("@User_Name", N(UserNameTextBox.Text))
com.Parameters.AddWithValue("@User_Password", PasswordToHash(PasswordTextBox.Text))
com.Parameters.AddWithValue("@User_RealName", N(NameTextBox.Text))
com.Parameters.AddWithValue("@User_Family", N(FamilyTextBox.Text))
com.Parameters.AddWithValue("@User_Mail", N(MailTextBox.Text))
com.Parameters.AddWithValue("@User_Degree", N(DegreeDropDownList.SelectedItem.Text))
com.Parameters.AddWithValue("@User_Role", N("User"))
Try
Application("con").open()
Num = com.ExecuteNonQuery()
lblResult.Text = Num.ToString & " "
Catch err As Exception
lblResult.Text = " . "
lblResult.Text &= err.Message
Finally
Application("con").close()
EndTry
If Num > 0 Then
Panel3.Visible = False
lblResult.Text = " <a href=Default.aspx></a> "
EndIf

مشکل اینجاست که به جای اینکه N ترجمه شود خود کاراکتر N را نیز ثبت می کند در حالی که وقتی Insert را بدون ارسال پارامتر می نویسم یعنی به روش ساده دیگر کاراکتر N را ذخیره نمیکند
N() تابعی ست که رشته را می گیرد و N'' در اطراف آن قرار می دهد مثلا Ali را می دهد N'Ali'
لطفا راهنمایی کنید.

arta.nasiri
سه شنبه 30 فروردین 1390, 16:03 عصر
سلام

به این روش انجام بده شاید کار کرد

com.Parameters.AddWithValue("@username", "N'" + textUsername.Text + "'");

ولی تا اونجایی که من میدونم وقتی توسط پارامترها مقدار رو ارسال میکنیم دیگه N لازم نیست که حروف فارسی درست وارد بانک بشن. البته تو بانک فیلدت هم باید اینجوری باشه. مثلا : nvarchar

veniz2008
سه شنبه 30 فروردین 1390, 16:20 عصر
سلام دوست من،میتونی از روش زیر برای درج اطلاعات با استفاده از پارامترها استفاده کنی(طبق نظر دوستمون هم بهتره که نوع رشته ای رو nvarchar بگیری،همچنین نیازی به استفاده از N برای حروف فارسی نیست):
SqlCommand cmd = new SqlCommand("insert into student(name,family)values(@nam,@famil)",conn);
cmd.Parameters.AddWithValue("@nam", textBox2.Text);
cmd.Parameters.AddWithValue("@famil", textBox3.Text);

fa_karoon
سه شنبه 30 فروردین 1390, 17:32 عصر
دوستان من دقیقا به همین روش هایی که گفتید درج رو انجام داده ام اما نتیجه نگرفته ام در روش اول با N کاراکتر N را هم ذخیره می کند در ضمن من نوع فیلدهام رو از نوع Nvarchar گذاشته ام اما وقتی بدون N ذخیره می کردم کلماتی مثل هیپنوتیزم، روانشناسی، اسکیزوفرنی و این قبیل کلمات که ی و ک داشتند را در جستجوی رکوردها نمی آورد

veniz2008
چهارشنبه 31 فروردین 1390, 01:13 صبح
شاید پایگاه و نوع داده رو از اول nvarchar نگرفتی و بعدش اینکار رو کردی،پیشنهاد من اینه که یه بار از اول،دیتابیس رو بساز و نوع رشته ای رو nvarchar بگیر،کدهایی که واست گذاشتم،چندین بار و در جاهای مختلف نوشتم و بدرستی کار کرده(هم برای درج و هم برای جستجو)،چون بعد از تغییر نوع داده به nvarchar ممکنه که جواب درست حاصل نشه،پیشنهادم رو یه بار تست کن،موفق باشی.