【问题标题】:Select * From table Where column Like statement c#Select * From table Where column Like 语句 c#
【发布时间】: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 设置为 Publiclabel5.text 是输出。

【问题讨论】:

  • 字符串连接后发送到服务器的完整查询是什么?您应该使用参数化查询来避免 SQL 注入。
  • @MartinSmith 你的意思是像 Feras 的回答吗?我已经试过了。
  • 不,这个答案行不通。在将百分比分配给参数之前,需要将百分比添加到值中。不过,您仍然没有回答发送到服务器的查询是什么。如果文本框值为空白,只留下通配符,您将看到您描述的结果。
  • @MartinSmith 我明白你的意思,我该怎么做?因为来自f1.textBox1.text 是输入,所以用户可以提供任何可能引用数据库的输入。我没有更多的想法来处理这个问题,我对 c# 有点陌生
  • 您是如何添加示例数据的?如果这是通过管理应用程序,那么您可能需要 commit; 更改,以便它们可用

标签: c# mysql select oledb


【解决方案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();

【讨论】:

  • 已经尝试过了,但没有任何结果。没有变化。
  • 检查您的连接字符串并确保您连接到正确的数据库,然后确保您的表数据
  • 毫无疑问,我正在访问正确的数据库和表
  • 很抱歉,为我尝试最后一次尝试并给我反馈@Rom
  • 感谢您的尝试,但仍然是相同的结果..我相信您所有的答案都会输出相同的,您只需以不同的方式声明语法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多