无效的列名 'Math' - 从数据库中检索数据

问题描述

有人可以解释为什么会发生这种情况吗?我正在尝试从 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";

我已经检查过拼写错误或类型,一切正常。所以是什么问题。

解决方法

您的问题是您的查询结果为

"SELECT * FROM Teacher WHERE Subject = Math"

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...