我正在尝试将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);
但现在它给我一个错误说:
其他信息:查询中的语法错误。不完整的查询条款。
还有什么我需要添加到芬兰这个查询吗?
答案 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);