مشکل در select where با فارسی در sql express و C#
با سلام
من دارد از sql express و C# استفاده میکنم
اطلاعات به صورت فارسی در sql express ذخیره میشه و قابل مشاهده هست
ولی وقتی می خوام select بزنم مثلا
select * from Mytable where myfield like farsichar
چیزی بر نمی گردونه
منظورم از farsichar یک کلمه یا حرف فارسی می باشد
فکر مینم از unicode دیتابیسم باشه لطفا راهنمایی کنید
با تشکر
نقل قول: مشکل در select where با فارسی در sql express و C#
سلام
بهتره یه Nهم کنار مورد جستجو بگذاری
select * from TableName where FieldName Like N'%"+textbox1.text + '%'
نقل قول: مشکل در select where با فارسی در sql express و C#
cmd.CommandText = "Select * from tbbook Where motarjem like '%" + textBoxX6.Text + "%' order by ID";
اگه رشته هم هست تو کوتیشن بذار
نقل قول: مشکل در select where با فارسی در sql express و C#
متاسفانه هیچ کدوم جواب نداد
این مشکل فقط برای فارسی می باشد
نقل قول: مشکل در select where با فارسی در sql express و C#
سلام.
با همه کلمات مشکل داری یا فقط با کلماتی که شامل حرف ک و ی هست؟.
کوئری که نوشتید بذارید تا یه نگاه کنیم.
نقل قول: مشکل در select where با فارسی در sql express و C#
نقل قول:
نوشته شده توسط
veniz2008
سلام.
با همه کلمات مشکل داری یا فقط با کلماتی که شامل حرف ک و ی هست؟.
کوئری که نوشتید بذارید تا یه نگاه کنیم.
publicDataTable RetrieveFilterPerson(string PersonSearched)
{
DataTable DT = newDataTable();
SqlConnection Conn = PublicClass.OpenConnection();
Conn.Open();
SqlDataAdapter MyCommand = newSqlDataAdapter("SELECT * FROM Persons WHERE PersonName Like '%" + PersonSearched + "%' or PersonCode Like '%" + PersonSearched + "%' order by PersonID DESC", Conn);
MyCommand.Fill(DT);
Conn.Close();
return DT;
}
PersonSearched
یک استرینگ است که در ایجا و وقتی عددی وارد میشود کاملا درست کار میکند
ولی وقتی یک کله یا حرف فارسی وارد میشود چیزی یافت نمی شود
برای تمام حروف فارسی مشکل دارد
با تشکر
نقل قول: مشکل در select where با فارسی در sql express و C#
publicDataTable RetrieveFilterPerson(string PersonSearched)
{
DataTable DT = newDataTable();
SqlConnection Conn = PublicClass.OpenConnection();
Conn.Open();
SqlDataAdapter MyCommand = newSqlDataAdapter("SELECT * FROM Persons WHERE PersonName Like '%" + PersonSearched + "%' or PersonCode Like '%" + PersonSearched + "%' order by PersonID DESC", Conn);
MyCommand.Fill(DT);
Conn.Close();
return DT;
}
نقل قول: مشکل در select where با فارسی در sql express و C#
فیلد فارسی رو از چه نوعی گرفتید؟
این کد رو هم امتحان کنید :
SqlDataAdapter MyCommand = newSqlDataAdapter("SELECT * FROM Persons WHERE PersonName Like N'%" + PersonSearched.Trim() + "%' or PersonCode Like N'%" + PersonSearched.Trim() + "%' order by PersonID DESC", Conn);
نقل قول: مشکل در select where با فارسی در sql express و C#
نقل قول:
نوشته شده توسط
veniz2008
فیلد فارسی رو از چه نوعی گرفتید؟
این کد رو هم امتحان کنید :
SqlDataAdapter MyCommand = newSqlDataAdapter("SELECT * FROM Persons WHERE PersonName Like N'%" + PersonSearched.Trim() + "%' or PersonCode Like N'%" + PersonSearched.Trim() + "%' order by PersonID DESC", Conn);
یا گذاشتن N درست شد
ولی چرا باید N را بزارم؟؟
چطور میتونم بدون N این کارو انجام بدم
نوع فیلد فارسی nvarchar
نقل قول: مشکل در select where با فارسی در sql express و C#
معمولا زمانیکه از پارامترها استفاده کنید دیگه نیازی به استفاده از N نیست. حرف N به sql میفهمونه که میخوایم با داده های یونیکد(که حروف فارسی هم جزیی از این داده ها هستند کار کنیم).
ولی بهترین راه حل در ADO، همیشه stored procedure بوده. هم از لحاظ سرعت، هم از لحاظ امنیت و هم برای پروژه های متوسط رو به بالا کارایی واقعی خودشو نشون میده و درگیر اینجور مسائل نمی شید.
اینم بگم که روش کدنویسی تون منسوخ شده و 100 درصد خطرناکه و براحتی قابل هک شدن هست(بهش میگن sql injection ) که برای حل این مشکل بایستی از پارامترها استفاده کنید که قبلا بارها در سایت دربارش بحث شده.
موفق باشید.
نقل قول: مشکل در select where با فارسی در sql express و C#
publicDataTable RetrieveFilterPerson(string PersonSearched)
{
DataTable DT = newDataTable();
SqlConnection Conn = PublicClass.OpenConnection();
Conn.Open();
SqlDataAdapter MyCommand = newSqlDataAdapter("SELECT * FROM Persons WHERE PersonName Like @PersonSearched or PersonCode Like @PersonSearched order by PersonID DESC", Conn);
MyCommand.SelectCommand.Parameters.AddWithValue("@PersonSearched", "%"+PersonSearched+"%");
MyCommand.Fill(DT);
Conn.Close();
return DT;
}
[RTL]
اینجوری خوبه مهندس؟؟
[/RTL]
نقل قول: مشکل در select where با فارسی در sql express و C#
بله منظورم به همین شکل بود ولی اگر از stored procedure ها استفاده کنی قطعا خیلی بهتر خواهد بود.
موفق باشید.
نقل قول: مشکل در select where با فارسی در sql express و C#
من خیلی وقت پیش این مشکل رو داشتم ! صرفا با گذاشتن یک حرف N درست میشه