查询表达式中的语法错误(逗号)

时间:2014-01-02 05:01:53

标签: c# sql database winforms

我正在尝试从数据库中获取用户的详细信息以显示在某些文本框中;但是我的代码似乎有问题。出现以下错误:

  

查询表达式中的语法错误(逗号)

这是完整的代码:

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();
}

3 个答案:

答案 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()+"");