【问题标题】:Invalid column name 'Math' - retrieving data from database无效的列名“数学” - 从数据库中检索数据
【发布时间】:2020-12-28 20:19:15
【问题描述】:

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

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

【问题讨论】:

标签: c# sql-server-ce


【解决方案1】:

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

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

【讨论】:

  • 我相信我现在已经修复了明显的错误,尽管它仍然只是一个 sn-p。
猜你喜欢
  • 2016-01-17
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 2014-09-11
  • 2013-11-09
相关资源
最近更新 更多