我正在尝试从数据库中获取用户的详细信息以显示在某些文本框中;但是我的代码似乎有问题。出现以下错误:
查询表达式中的语法错误(逗号)
这是完整的代码:
string filePath;
try
{
filePath = (Application.StartupPath + ("\\" + DBFile));
connection = new System.Data.OleDb.OleDbConnection((ConnectionString + filePath));
connection.Open();
System.Data.OleDb.OleDbDataReader reader;
System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand();
command.Connection = connection;
// ---retrieve user's particulars---
command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1);
reader = command.ExecuteReader(CommandBehavior.CloseConnection);
reader.Read();
// ---display user's particulars---
textBox2.Text = reader["SSN"].ToString();
textBox3.Text = reader["FirstName"].ToString();
textBox4.Text = reader["LastName"].ToString();
}
答案 0 :(得分:2)
如何改变
command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1);
到
command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1.Text);
答案 1 :(得分:2)
这里
command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1);
如此内部.ToString方法将在textBox1上调用,而你的commandText将成为
SELECT * FROM Enroll WHERE ID=System.Windows.Forms.TextBox, Text:
因此错误。
你可能意味着文本框中的文字
command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1.Text);
注意:强> 你不应该首先这样做。您应该考虑使用参数化查询。所以,你应该做的是
SqlCommand cmd = new SqlCommand("SELECT * FROM Enroll WHERE ID=@ID");
cmd.Parameters.AddWithValue("@ID", textBox1.Text.Trim());
答案 2 :(得分:0)
这更合适:
command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1.text.toString()+"");