【发布时间】:2015-10-08 22:26:42
【问题描述】:
我在 Form2 中使用此代码未能得到正确的结果:
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 设置为 Public。
label5.text 是输出。
【问题讨论】:
-
字符串连接后发送到服务器的完整查询是什么?您应该使用参数化查询来避免 SQL 注入。
-
@MartinSmith 你的意思是像 Feras 的回答吗?我已经试过了。
-
不,这个答案行不通。在将百分比分配给参数之前,需要将百分比添加到值中。不过,您仍然没有回答发送到服务器的查询是什么。如果文本框值为空白,只留下通配符,您将看到您描述的结果。
-
@MartinSmith 我明白你的意思,我该怎么做?因为来自
f1.textBox1.text是输入,所以用户可以提供任何可能引用数据库的输入。我没有更多的想法来处理这个问题,我对 c# 有点陌生 -
您是如何添加示例数据的?如果这是通过管理应用程序,那么您可能需要
commit;更改,以便它们可用