ورود

View Full Version : جست و جو در پايگاه داده



mononok
چهارشنبه 03 تیر 1388, 11:21 صبح
من امروز خيلي سلام كردم :لبخندساده:(يعني سوال كردم:خجالت:)
من با كد زير اطلاعاتي را در پايگاه جست و جو كردم و در ليست نشون دادم
ولي مشكلي كه دارم اينه كه با اين كه select استفاده كردم ولي همه ركوردهارا در ليستم نشون نميده و اولين ركورد را نشان ميده for هم كه آخه با چيزي نمي توان گذاشت
طبق معمول چيكاركنم؟؟؟؟


lst1.Items.Clear()
lst2.Items.Clear()
Dim connstr As String
connstr = "Data Source=MONONOK\NSERVER;Initial Catalog=atragin;User ID=sa;password=123456"
Dim conn As SqlConnection = New SqlConnection(connstr)
If d1.SelectedIndex = 0 Then
Try
conn.Open()
Dim cmdstr As String = "select * from atr where name='" + ts.Text + "'"
Dim cmd As SqlCommand = New SqlCommand(cmdstr, conn)
Dim reader As SqlDataReader = cmd.ExecuteReader
If reader.Read Then
lst1.Items.Add(reader.Item("name"))
lst2.Items.Add(reader.Item("price"))
l1.Text = "Product Was Found!"
End If
Catch ex As Exception
l1.Text = ex.Message
End Try
End If

abbaseftekhari
چهارشنبه 03 تیر 1388, 14:03 عصر
سلام دوست عزیز کوئری جستجو درست نیست بجای آن از این کوئری استفاده کن:
('%'select * from atr where (name LIKE N'%' + ts.Text +N

mononok
چهارشنبه 03 تیر 1388, 14:52 عصر
ممنون از كمكتون
ميشه يه توضيحي دربارش بديد كه اون '%'N رو براي چي گذاشتيد
تشكر

mononok
چهارشنبه 03 تیر 1388, 15:47 عصر
كد بالا عمل نمي كنه من اسم فيلدشو عوض كردم ولي چون نمي دونم ساختار كد چيكار مي كنه بقيه رو همون طور نوشتم ولي كار نمي كنه اون N به خاطر Name هستش يا نه هميشه N هست البته چون like استفاده كردين فكر مي كنم به خاطر Name هست من بجاش J كه اسم اول فيلدم بود را گذاشتم و لي كار نكرد.
:ناراحت:

abbaseftekhari
چهارشنبه 03 تیر 1388, 18:19 عصر
سلام
N را عوض نکنید name نام ستونی است که شما می خواهید در آن جستجو کنید و ts.Text ورودی اطلاعت کاربر برای جستجو است.

iman_22a
چهارشنبه 03 تیر 1388, 18:31 عصر
سلام دوست عزیز کوئری جستجو درست نیست بجای آن از این کوئری استفاده کن:
('%'select * from atr where (name LIKE N'%' + ts.Text +N

بنظر میاد یه N اضافه گذاشتین دوست عزیز . N اولی کافیه .



select * from atr where (name LIKE N'%' + ts.Text +'%')

mononok
چهارشنبه 03 تیر 1388, 20:00 عصر
ممنون ولي هيچ كدومشون عمل نمي كنند

Try
conn.Open()
Dim cmdstr AsString = "select * from atr where (jens LIKE N'%' + ts.Text + N'%')"
Dim cmd As SqlCommand = New SqlCommand(cmdstr, conn)
Dim reader As SqlDataReader = cmd.ExecuteReader
If reader.Read Then
lst1.Items.Add(reader.Item("name"))
lst2.Items.Add(reader.Item("price"))
lst3.Items.Add(reader.Item("jens"))
l1.Text = "Product Was Found!"
EndIf
Catch ex As Exception
l1.Text = ex.Message
EndTry

در هر دو حالت خطاي زير رو ميده
The multi-part identifier "ts.Text" could not be bound.
؟؟؟؟؟؟؟؟:افسرده:

iman_22a
چهارشنبه 03 تیر 1388, 20:47 عصر
سلام . معلومه که باید ارور بده. اینو امتحان کن :


Dim cmdstr As String = "select * from atr where (jens LIKE N'%' +" & ts.Text & " + '%')"

mononok
چهارشنبه 03 تیر 1388, 21:40 عصر
اين كد يه مشكل ساختاري داره
من در ts.text مورد جست و جو رو ميدم(men مثلا) كه در فيلد يا ستون jens بگرده و هرچي هست در ليستها نشون بده
ولي اين برميگرده به من ميگه invalid column name men يعني اسم ستون رو با كلمه جست و جو اشتباه گرفته!

iman_22a
چهارشنبه 03 تیر 1388, 22:39 عصر
اين كد يه مشكل ساختاري داره
من در ts.text مورد جست و جو رو ميدم(men مثلا) كه در فيلد يا ستون jens بگرده و هرچي هست در ليستها نشون بده
ولي اين برميگرده به من ميگه invalid column name men يعني اسم ستون رو با كلمه جست و جو اشتباه گرفته!

oخوب شما باید Syntax صحیح کدنویسی T-Sql را رعایت کنین (توی MSDN بگردین ، پیدا می کنین) . اینو امتحان کنین :



Dim cmdstr As String = "select colo1,col2,col3,jens from atr where jens LIKE N'%'+" & ts.Text & "+'%'"


ممکنه از * بوده باشه . چون باید نام ستونها قید شده باشن .

hobab-theme
پنج شنبه 04 تیر 1388, 01:02 صبح
من یه مقاله تو این صفحه آپلود کردم . اونو بخونید فکر نکنم دیگه با جستجو مشکل داشته باشید
http://barnamenevis.org/forum/showthread.php?t=164648&page=2

mononok
پنج شنبه 04 تیر 1388, 14:24 عصر
با سلام وتشكر از همه دوستان

hobab-theme عزيز كد شما هم درست مانند كدي بود كه دوستان اشاره كردند
و مشكل قبلي رو داشت ولي واقعا ممنون
چون اونقدر حواسم پرت شده بود كه يادم رفته بود ميشه راحت از gridview استفاده كنم:اشتباه:
و تازه كد درست sql رو هم ميشه از query هاي خود sqldatasource بيرون كشيد
با ديدن gridview فايل شما بخش فراموشيم احيا شد
چقدر خودمو گيج كردم:متفکر:
يكي نيست به من بگه آدم عاقل listbox ديگه چيه؟؟؟:لبخندساده:

mononok
پنج شنبه 04 تیر 1388, 15:59 عصر
واقعا شرمنده
ولي نمي شه از gridviewبا sqldatasource استفاده كرد چون براي هر ستون يا فيلد در اون صورت بايد يه sqldatasource تعريف كرد و در اون query رو ساخت
من رفتم از query هاي sqldatasource دزدي كردم و آوردم تو بخش كدنويسيم استفاده كردم
ولي اونها هم مثل اون برنامه اي كه hobab-theme در فايلش داده بود از object استفاده كرده بودند كد برنامه اون فايل كه به C# بود به vb تبديل كردم چون من C# ام خوب نيست و پروژمم به vb هست تا از همين روش object استفاده كنم
نمي دونم درسته يا نه خطا نميده ولي در نهايت gridview رو هم نشون نميده


ProtectedSub b(ByVal keyword AsObject)
Dim conn As SqlConnection = New SqlConnection("Data Source=MONONOK\NSERVER;Initial Catalog=atragin;User ID=sa;password=123456")
Dim cmdstr AsString = "Select * From atr Where jens Like N'%'+@KeyWord+'%'"
Dim cmd As SqlCommand = New SqlCommand(cmdstr, conn)
cmd.Parameters.AddWithValue("@KeyWord", keyword)
conn.Open()
GridView1.DataSource = cmd.ExecuteReader
GridView1.DataBind()
conn.Close()
EndSub



ProtectedSub Button2_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles Button2.Click
Call b(ts.Text)
EndSub