PDA

View Full Version : نوشتن کد در c# برای سرچ در پایگاه داده



ehsankhan
یک شنبه 04 مرداد 1394, 09:57 صبح
سلام

در صفحه تکست باکسی دارم که کاربر کد ملی را در آن وارد می کند می خواهم به محض این که کاربر کد ملی را وارد کرد در صورتی که کد ملی در دیتابیس(sql server)موجود باشد شماره سطر کد ملی در دیتابیس را برگرداند. لطفا راهنمایی کنید باتشکر

دلتنگ اسمان
یک شنبه 04 مرداد 1394, 10:30 صبح
با سلام
میخوای باتن داشته باشی و روی اون باتن کلیک کنی تا نشون بده در قسمت event باتن این کد رو بنویس :

SqlConnection con = new SqlConnection();
SqlCommand com = new SqlCommand();
con.ConnectionString = "server=localhost;Integrated security=true;database=yourDB";
com.Connection = con;
con.Open();
com.CommandText = "SELECT ID FROM yourTable WHERE (codemelli = textBox1.Text.Trim() + )";

label1.Text= ((com.ExecuteScalar()).ToString());
con.Close();
con.Dispose();

اگه میخوای کد ملی 10 رقمی وارد شد خودش نشون بده :


private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length < 10)
return;
SqlConnection con = new SqlConnection();
SqlCommand com = new SqlCommand();
con.ConnectionString = "server=localhost;Integrated security=true;database=yourDB";
com.Connection = con;
con.Open();
com.CommandText = "SELECT ID FROM yourTable WHERE (codemelli like '" + textBox1.Text.Trim() + "%')";

label1.Text = ((com.ExecuteScalar()).ToString());
con.Close();
con.Dispose();

}

ehsankhan
یک شنبه 04 مرداد 1394, 10:57 صبح
..........

دلتنگ اسمان
یک شنبه 04 مرداد 1394, 11:05 صبح
با عرض معذرت شرط رو نگذاشته بودم که اصلاح شد:
فرض بر این است که شما در جدولتون ستونی به نام ID و ستونی هم به نام codemelli دارین .
دستور Select مشخص میکنه چه ستونی رو از چه جدولی میخواهید. اگه توضیح بیشتری میخوای بگو تا دقیقتر بیان کنم.

ehsankhan
یک شنبه 04 مرداد 1394, 11:11 صبح
با عرض معذرت شرط رو نگذاشته بودم که اصلاح شد:
فرض بر این است که شما در جدولتون ستونی به نام ID و ستونی هم به نام codemelli دارین .
دستور Select مشخص میکنه چه ستونی رو از چه جدولی میخواهید. اگه توضیح بیشتری میخوای بگو تا دقیقتر بیان کنم.


ممنون از اینکه توضیح می دین

الان این کد اصلاح شده خودش کد ملی وارد شده رو می گیره و بلافاصله داخل دیتابیس دنبالش می گرده؟؟؟؟

دلتنگ اسمان
یک شنبه 04 مرداد 1394, 11:27 صبح
اگه دقت کنی کدها به دو صورت نوشته شده هر کدوم رو میخوای میتونی استفاده کنی :
یکی برای حالتی که میخوای کدملی را وارد کنی و بعد دکمه جستجو رو بزنی.
حالت دوم هم برای وقتی که وقتی کدملی را وارد کردی (یعنی رقم دهمی زده شد خودش در دیتابیس جستجو میکنه ) و نیازی نیست دکمه ای رو بزنی.

ehsankhan
یک شنبه 04 مرداد 1394, 11:34 صبح
اگه دقت کنی کدها به دو صورت نوشته شده هر کدوم رو میخوای میتونی استفاده کنی :
یکی برای حالتی که میخوای کدملی را وارد کنی و بعد دکمه جستجو رو بزنی.
حالت دوم هم برای وقتی که وقتی کدملی را وارد کردی (یعنی رقم دهمی زده شد خودش در دیتابیس جستجو میکنه ) و نیازی نیست دکمه ای رو بزنی.



ولی من کد شما رو نوشتم و اجرا کردم
به این خط که می رسه
com.CommandText = "SELECT ID FROM yourTable WHERE (codemelli like '" + textBox1.Text.Trim() + "%')";
هیچ کاری انجام نمی ده و چون من کد شما رو در ترای کتچ گذاشتم به این صورت


SqlConnection con = new SqlConnection();
SqlCommand com = new SqlCommand();
con.ConnectionString = "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456"; ;
com.Connection = con;
try
{
StringTrimming trim=new StringTrimming();
con.Open();
MessageBox.Show("ttt");
com.CommandText = "SELECT ID FROM table_2 WHERE CODEMELI= ' " & trim(text1.Text) & " '";


text2.Text = ((com.ExecuteScalar()).ToString());
}
catch (Exception ex)
{
con.Close();
MessageBox.Show("vnbv");
con.Dispose();
}


ولی بعد از اجرای con.open بلافاصله به کتچ رفته و دیتابیس را می بندد بدون اینکه id را نشان دهد

محمد رضا فاتحی
یک شنبه 04 مرداد 1394, 11:48 صبح
الان این تکه کد چیه؟؟؟؟!!!!
com.CommandText = "SELECT ID FROM table_2 WHERE CODEMELI= ' " & trim(text1.Text) & " '";

متن خطای داخل بلوک catch رو هم بنویسید

ehsankhan
یک شنبه 04 مرداد 1394, 11:52 صبح
الان این تکه کد چیه؟؟؟؟!!!!
com.CommandText = "SELECT ID FROM table_2 WHERE CODEMELI= ' " & trim(text1.Text) & " '";

متن خطای داخل بلوک catch رو هم بنویسید

com.CommandText = "SELECT ID FROM yourTable WHERE (codemelli like '" + textBox1.Text.Trim() + "%')";

عذرمیخوام
کد درست اینه ولی با این هم جواب نمی ده

محمد رضا فاتحی
یک شنبه 04 مرداد 1394, 12:11 عصر
الان سوال اینه...میره توی catch یا جواب نشون نمی ده؟؟

ehsankhan
یک شنبه 04 مرداد 1394, 12:12 عصر
اگه دقت کنی کدها به دو صورت نوشته شده هر کدوم رو میخوای میتونی استفاده کنی :
یکی برای حالتی که میخوای کدملی را وارد کنی و بعد دکمه جستجو رو بزنی.
حالت دوم هم برای وقتی که وقتی کدملی را وارد کردی (یعنی رقم دهمی زده شد خودش در دیتابیس جستجو میکنه ) و نیازی نیست دکمه ای رو بزنی.

اشتباه از من بود کدهای شما خیلی درست و دقیق کار می کنند از شما ممنونم
فقط یه سوال دیگه اگر مثلا 7 تکست باکس داشته باشیم و بخواهیم بلافاصله بعد از ورود کد ملی هر بک از این تکست باکس ها با اطلاعات موجو در دیتابیس که مربوط به همان کد ملی وارد شده می باشند پر کنیم چطوری میشه؟؟؟؟
آیا برای هر column مربوط به کد ملی وارد شده باید این کد نوشته شود و مثلا بجای ID ، نام COLUMN مورد نظر را بگذاریم
com.CommandText = "SELECT ID FROM yourTable WHERE (codemelli like '" + textBox1.Text.Trim() + "%')";
یا راه دیگری داره

zayens
یک شنبه 04 مرداد 1394, 12:16 عصر
لطفا در هر پست فقط یک سوال بپرسید