PDA

View Full Version : جستجو با چند متغیر در بانک SQL



masoudcarpet
سه شنبه 28 اردیبهشت 1389, 21:42 عصر
من برای جستجو و ذخیره اطلاعات در بانک اطلاعاتی از دفترچه تلفنی که در همین سایت وجود داشت استفاده کردم و کد جستجو با یک متغیر رو به صورت زیر مینویسم

loaddata(" where (" + search + " like N'%" + TextBox1.Text + "%')")

حالا برای جستجو با 2 یا چند متغیر به مشکل برخوردم لطفا راهنمائی کنید کد زیر رو چه طوری برای 2 یا چند متغییر بنویسم:اشتباه:

iman_me
سه شنبه 28 اردیبهشت 1389, 21:49 عصر
شما فقط باید از AND ,OR .... استفاده کنید

masoudcarpet
سه شنبه 28 اردیبهشت 1389, 22:30 عصر
اگه ممکنه برام بنویسید

iman_me
سه شنبه 28 اردیبهشت 1389, 23:00 عصر
این هم یک نمونه


WHERE (NamberCode='" + TextBox1.Text + "') AND (dbo.InputdayK.DateT = '" & MaskedTextBox1.Text & "') AND (dbo.InputdayK.DateT <= '" & MaskedTextBox1.Text & "')"

Open-Source
چهارشنبه 29 اردیبهشت 1389, 10:46 صبح
شما بهتر هستش که از پارامتر استفاده کنید؛ چون اگه شما مثلا 10 تا فیلد داشته باشید، فکر کنید کد نویسی چقدر شلوغ و سخت میشه.
علاوه بر اون اگه از Parameter استفاده کنید، sqlInjection رو هم به صفر میرسونید.

به این نمونه کد نگاه کن، از Parameter استفاده کرده (البته با C# هستش):

OleDbCommand ocm = new OleDbCommand();

ocm.CommandText = "INSERT INTO tblTel (FName,LName,PN,Mobile,Tozih) VALUES (@p1,@p2,@p3,@p4,@p5)";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("@p1", txtFName.Text);
ocm.Parameters.AddWithValue("@p2", txtLName.Text);
ocm.Parameters.AddWithValue("@p3", txtPN.Text);
ocm.Parameters.AddWithValue("@p4", txtMobile.Text);
ocm.Parameters.AddWithValue("@p5", txtTozih.Text);

barbodsoft.com
چهارشنبه 29 اردیبهشت 1389, 11:01 صبح
شما بهتر هستش که از پارامتر استفاده کنید؛ چون اگه شما مثلا 10 تا فیلد داشته باشید، فکر کنید کد نویسی چقدر شلوغ و سخت میشه.
علاوه بر اون اگه از Parameter استفاده کنید، sqlInjection رو هم به صفر میرسونید.

به این نمونه کد نگاه کن، از Parameter استفاده کرده (البته با C#‎‎‎‎‎‎ هستش):

OleDbCommand ocm = new OleDbCommand();

ocm.CommandText = "INSERT INTO tblTel (FName,LName,PN,Mobile,Tozih) VALUES (@p1,@p2,@p3,@p4,@p5)";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("@p1", txtFName.Text);
ocm.Parameters.AddWithValue("@p2", txtLName.Text);
ocm.Parameters.AddWithValue("@p3", txtPN.Text);
ocm.Parameters.AddWithValue("@p4", txtMobile.Text);
ocm.Parameters.AddWithValue("@p5", txtTozih.Text);


این کد برای insert کردن هست. ایشون برای سرچ خواستن.


برای سرچ با یک پارامتر


Dim cmd As SqlCommand = New SqlCommand("select * from khadamat where id =@id", sqlcon)
With cmd
.Parameters.Add(New SqlParameter("@id", SqlDbType.BigInt)).Value = Val(TxtId.Text)
EndWith



اگر خواستید سرچ با چند پارمتر انجام بدید. باید به شکل زیر بنویسید.



Dim cmd As SqlCommand = New SqlCommand("select * from khadamat where id =@id and name=@name", sqlcon)
With cmd
.Parameters.Add(New SqlParameter("@id", SqlDbType.BigInt)).Value = Val(TxtId.Text)
.Parameters.Add(New SqlParameter("@Name", SqlDbType.NVarChar, 50)).Value = TxtName.Text
EndWith


ولی من پیشنهاد نمی کنم به این شکل استفاده کنید مگر اینکه تعداد پارامترها زیاد باشه.

masoudcarpet
جمعه 31 اردیبهشت 1389, 12:10 عصر
از همه ممنونم ولی کد من به این صورت جواب داد:


loaddata2(" where (" + search + " like N'%" + b + "%') and (" + search1 + " like N'%" + d + "%') and (" + search2 + " >= '" & MaskedTextBox1.Text & "' ) and (" + search2 + " <= '" & MaskedTextBox2.Text & "' ) ")