在OleDbCommand中添加Where子句

时间:2016-10-05 09:16:10

标签: c# combobox where oledbcommand

我正在尝试将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);

但现在它给我一个错误说:

  

其他信息:查询中的语法错误。不完整的查询条款。

还有什么我需要添加到芬兰这个查询吗?

5 个答案:

答案 0 :(得分:2)

我会这样做;

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

答案 1 :(得分:1)

请试试这个

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

答案 2 :(得分:0)

您可以更长时间地使用sql语句:

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

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

答案 3 :(得分:0)

如果你想

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

答案 4 :(得分:0)

您可以尝试以下代码

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