-3 c# sql-server-ce
有人可以解释为什么会这样吗?我正在尝试从 mysql 数据库中检索数据,但发生此错误,但当我检索一个整数值(例如 TeacherID)时,相同的代码工作正常。检索非数字值时出现错误。
string connectionString = (@"Data Source=(LocalDB)\v11.0;AttachDbFilename=\myDB.mdf;Integrated Security=True");
string sql = "SELECT * FROM Teacher WHERE Subject = "+ TSubject.Text;
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, connection);
DataSet ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, "Teacher");
connection.Close();
DataGridViewStudent.DataSource = ds;
DataGridViewStudent.DataMember = "Teacher";
Run Code Online (Sandbox Code Playgroud)
我已经检查过拼写错误或类型,一切正常。所以是什么问题。
您的问题是您的查询结果为
"SELECT * FROM Teacher WHERE Subject = Math"
Run Code Online (Sandbox Code Playgroud)
Math 没有被引用,因此假定为列而不是值。
您可以 - 但不应该 - 解决此问题的一种方法是手动添加引号。而是参数化查询。
string sql = "SELECT * FROM Teacher WHERE Subject = @SUBJECT";
Sqlcommand command = new SqlCommand(sql, connection);
command.Parameter.Add(new SqlParameter("@SUBJECT", TSubject.Text));
SqlDataAdapter dataadapter = new SqlDataAdapter(command);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |