我有一个文本框和一个数据网格。我试图在文本框中输入姓氏,并将该姓氏的整个记录从oracle数据库返回到datagrid。下面的代码当前返回表中的所有记录,而不是按姓氏搜索。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myString As String
Dim myArg As String
Dim mysql As String
Dim myConn As New OleDb.OleDbConnection()
' Create new connection
myString = "Provider=msdaora;Data Source=XXXX;User Id=XXXX;Password=XXXX;"
myConn.ConnectionString = myString
myArg = TextBox1.Text
mysql = "select * from table1 where lastname like '%'"
Try
myConn.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Dim myDataadapter As New OleDb.OleDbDataAdapter(mysql, myConn)
Dim myDs As New DataSet
myDataadapter.Fill(myDs, "customer")
Dim prmLName As New OleDb.OleDbParameter()
prmLName.Direction = ParameterDirection.Input
prmLName.Size = "10"
prmLName.Value = TextBox1.Text
DataGridView1.DataSource = myDs
DataGridView1.DataMember = "customer"
End Sub
End Class
答案 0 :(得分:1)
Private Sub Search1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Search1.Click
Dim connectionstring As String = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=dps; User=root;Password=xxxxx;Option=3;"
Dim conn As New OdbcConnection(connectionstring)
conn.Open()
Dim da As New OdbcDataAdapter("select * from Student where Grade ='" & Label1.Text & "' and lastName like '%" & txtLastName.Text & "%'", conn)
Dim ds As New DataSet
da.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
DataGridView1.Refresh()
conn.Close()
答案 1 :(得分:0)
你没有传递lastname的参数值,所以它把它作为null并返回所有记录:
mysql = "select * from table1 where lastname like '%"
您可以这样做: -
mysql = "select * from table1 where lastname like '%" & txtLastName.Text & "%'"
我还建议您按SqlCommand.Parameters Property传递参数以避免SQL Injection.
答案 2 :(得分:0)
您应该按如下方式编写您的选择查询。
mysql = "select * from table1 where lastname like '%" & myArg & "'"