PDA

View Full Version : سوال: جستجو براساس دستور Like



veniz2008
چهارشنبه 05 آبان 1389, 22:22 عصر
سلام،من برای جستجو براساس قسمتی از نام(مثلا مح برای محمد)از کد زیر استفاده کردم ولی شرطم اصلا برقرار نمیشه،برای داده های انگلیسی هم تست کردم ولی بازم جواب نداد،آیا کدها ایراد داره؟لطفا راهنمایی کنید.تشکر

cmd1.CommandText = "SELECT * FROM tell where name Like 'N%" + textBox1.Text + "'";
con.Open();
SqlDataReader reader = cmd1.ExecuteReader();
int i = 0;
while (reader.Read() == true)
{
if (textBox1.Text == "SELECT * FROM tell where name Like 'N%" + textBox1.Text + "'")
{

debugger
چهارشنبه 05 آبان 1389, 23:54 عصر
فکر می کنم هم در کوئری و هم نحوه ی نوشتن کد ها مشکل وجود دارد

mmd2009
پنج شنبه 06 آبان 1389, 01:30 صبح
با سلام

دوست عزیز شما بهتره ار پارامتر استفاده بکنید چون اصلا نیازی به نوشت N ندارید چون خود commandtext دستورات یونیکد رو اجرا میکنه

موفق باشید

veniz2008
پنج شنبه 06 آبان 1389, 11:09 صبح
با سلام

دوست عزیز شما بهتره ار پارامتر استفاده بکنید چون اصلا نیازی به نوشت N ندارید چون خود commandtext دستورات یونیکد رو اجرا میکنه

موفق باشید
من مشکلم حل نشد،میشه ایراد همین کدها رو بگید.تشکر

محسن شامحمدی
پنج شنبه 06 آبان 1389, 11:50 صبح
من در کوئری هام اصلا از N استفاده نمی کنم ولی به راحتی متن های فارسی رو هم مورد جستجوی خودش قرار می ده.
بنظرم بدون استفاده از N کدتون رو اجرا کنید
یعنی
SELECT * FROM tell where name Like '%" + textBox1.Text + "'";

veniz2008
پنج شنبه 06 آبان 1389, 17:26 عصر
من در کوئری هام اصلا از N استفاده نمی کنم ولی به راحتی متن های فارسی رو هم مورد جستجوی خودش قرار می ده.
بنظرم بدون استفاده از N کدتون رو اجرا کنید
یعنی
SELECT * FROM tell where name Like '%" + textBox1.Text + "'";
دوستان مشكلم حل نشده،من كدها رو بصورت كامل ميذارم،لطفا راهنمايي كنيد چون خيلي به اين جستجو نياز دارم.تشكر

SqlConnection conn = new SqlConnection("Data Source = .\\Wincc;Initial Catalog=US_DB;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Student WHERE UserName Like '%" + TextBox1.Text + "%'";
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = new SqlCommand();
Adapter.SelectCommand.Connection = conn;
Adapter.SelectCommand.CommandText = "SELECT * FROM Student WHERE UserName Like '%" + TextBox1.Text + "%'";
DataTable dt = new DataTable();
Adapter.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
if (TextBox1.Text == "SELECT * FROM Student WHERE UserName Like '%" + TextBox1.Text + "%'")
{

veniz2008
جمعه 07 آبان 1389, 09:50 صبح
دوستان مشكلم حل نشده،من كدها رو بصورت كامل ميذارم،لطفا راهنمايي كنيد چون خيلي به اين جستجو نياز دارم.تشكر

SqlConnection conn = new SqlConnection("Data Source = .\\Wincc;Initial Catalog=US_DB;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM Student WHERE UserName Like '%" + TextBox1.Text + "%'";
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = new SqlCommand();
Adapter.SelectCommand.Connection = conn;
Adapter.SelectCommand.CommandText = "SELECT * FROM Student WHERE UserName Like '%" + TextBox1.Text + "%'";
DataTable dt = new DataTable();
Adapter.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
if (TextBox1.Text == "SELECT * FROM Student WHERE UserName Like '%" + TextBox1.Text + "%'")
{

من بخش های مختلف کدم رو تست کردم،مطمئنم که کدی که واسه شرط گذاشتم مشکل داره،دوستان راهنمایی کنید تا مشکلمحل بشه،تشکر.

adelisardo
جمعه 07 آبان 1389, 11:00 صبح
دوست عزیز
کلمه N رو شما باید قبل از شروع رشته در Query قرار دهید ( کلمه N رو حتما با حرف بزرگ استفاده کنید ) و انتهای رشته خود هم % رو استفاده کنید :
اصلاح شده :


cmd1.CommandText = "SELECT * FROM tell where name Like N'%" + textBox1.Text + "%'";
con.Open();
SqlDataReader reader = cmd1.ExecuteReader();
int i = 0;
while (reader.Read() == true)
{
if (textBox1.Text == "SELECT * FROM tell where name Like 'N%" + textBox1.Text + "'")
{

veniz2008
جمعه 07 آبان 1389, 16:17 عصر
[quote=adelisardo;1138894]دوست عزیز
کلمه N رو شما باید قبل از شروع رشته در Query قرار دهید ( کلمه N رو حتما با حرف بزرگ استفاده کنید ) و انتهای رشته خود هم % رو استفاده کنید :
]
دوست عزيز،راهكاري رو كه گفته بوديد قبلا براي داده هاي فارسي تست كرده بودم ولي جواب نداده بود،مشكل اينجاست كه براي داده هاي انگليسي هم جواب نميده،از دوستان اگه كسي هست و كد جستجو براساس like رو داره زحمت بكشه بذاره،تشكر از محبت همه دوستان.