如何解决无效的列名 '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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。