将 Where 子句添加到 OleDbCommand

Adding a Where Clause to a OleDbCommand

我正在尝试向以下代码行添加一个 where 子句。

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

我需要有关如何将 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);

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

Additional information: Syntax error in query. Incomplete query clause.

我还需要添加其他内容来完成此查询吗?

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

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

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

如果你愿意

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

你可以试试下面的代码

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

我会按如下方式进行;

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 注入

请试试这个

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