2015-07-19 100 views
0

我没有得到这个代码在窗体2正确的结果:SELECT * FROM表,其中列Like语句C#

conn.Open(); 
OleDbCommand cmd = new OleDbCommand("Select * From udbTable Where Username Like '" + f1.textBox1.Text + "%'", conn); 
OleDbDataReader reader = cmd.ExecuteReader(); 

     while (reader.Read()) 
     { 
      label5.Text = reader["Username"].ToString(); 
     } 
     conn.Close(); 

我在表中3点样品的数据,但我总是得到相同的结果这是数据库的第一个条目。无论何时我输入the textbox1.Text中的最后一个条目或第二个条目,我仍然会得到第一个条目。

textbox1.Text是从Form1,我把它的属性Modification设置为Publiclabel5.text是输出。

+2

什么是字符串连接后发送给服务器的完整的查询?您应该使用参数化查询来避免SQL注入。 –

+0

@MartinSmith你的意思是像Feras的答案吗?我已经尝试过了。 – Rom

+0

没有那个答案不起作用。在将值分配给参数之前,需要将百分比添加到值中。您仍然没有回答发送给服务器的查询。如果文本框的值为空白,只需保留通配符,就会看到您描述的结果。 –

回答

1

试试这个修复

conn.Open(); 
OleDbCommand cmd = new OleDbCommand(); 
cmd.Connection=conn; 
command.CommandText = "Select * From udbTable Where Username Like ?"; 
cmd.Parameters.Add("@Username",OleDbType.VarChar); 
cmd.Parameters["@Username"].Value=f1.textBox1.Text; 
OleDbDataReader reader = cmd.ExecuteReader(); 
+0

已经尝试过,但它没有给我带来什么结果。没有变化发生。 – Rom

+0

检查你的连接字符串,并确保你连接到正确的数据库,然后确保你的表数据 –

+0

毫无疑问的连接,我正在访问正确的数据库和表 – Rom

相关问题