【问题标题】:Adding a Where Clause to a OleDbCommand向 OleDbCommand 添加 Where 子句
【发布时间】:2016-10-05 17:37:23
【问题描述】:

我正在尝试将 where 子句添加到以下代码行。

这是因为我从下拉组合框中获取数据表。现在我想根据用户名过滤该表,以便只有用户才能看到他们的记录。

我需要有关如何将 where 子句写入此代码的帮助。

如果您需要更多信息,我很乐意添加。

感谢您的帮助。

OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From ", comboBox1.Text), con);

评论后

我添加了 sql 注入保护。

OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From 
@Companydetails where Research_ID = @Researcher_ID"), con);

        cmd.Parameters.AddWithValue("@Companydetails", comboBox1.Text);
        cmd.Parameters.AddWithValue("@Researcher_ID", usernumber_lab.Text);

但现在它给了我一个错误提示:

附加信息:查询中的语法错误。查询子句不完整。

我还需要添加什么来完成这个查询吗?

【问题讨论】:

  • 那么是什么阻止了你?
  • 您的代码容易受到SQL Injection 的攻击,如果您有时间我建议您阅读一下。

标签: c# combobox where oledbcommand


【解决方案1】:

我会这样做;

string query = "Select * from MyTable Where username = @username";

using (OleDbCommand cmd = new OleDbCommand(query, con))
{
   cmd.Parameters.Add("@username", OleDbType.VarChar).Value = comboBox1.Text;
}

这样对象将自动处理,并且您将免受 Sql Injection 的影响

【讨论】:

  • OP 提到表名也来自下拉列表。
【解决方案2】:

请试试这个

string sql = String.format("Select * From {0} where id = {1}", comboBox1.Text, id);
OleDbCommand cmd = new OleDbCommand(sql,con);

【讨论】:

    【解决方案3】:

    你可以让你的 sql 语句更长:

    OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From table Where something = something", comboBox1.Text), con);
    

    您不必使用多行或任何东西。这仅在某些数据库管理器中需要,而在 c# sql 语句中不需要。

    【讨论】:

      【解决方案4】:

      如果你愿意

      OleDbCommand cmd = new OleDbCommand(String.Format("Select * From {0} WHERE username='{1}'", comboBox1.Text,username.Text), con);
      

      【讨论】:

        【解决方案5】:

        你可以试试下面的代码

        OleDbCommand cmd = new OleDbCommand(string.Format(
                                          "SELECT * FROM {0} WHERE Username = '{1}'",
                                          comboBox1.Text, userName), con);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多