为什么我的代码会显示此消息
标准表达式中的数据类型不匹配。
属性Fine
是数字数据类型。
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string cq = "select sum(Fine) from Studentbook where Student_ID='" + textsearch.Text + "'";
command.CommandText = cq;
int a = Convert.ToInt32(command.ExecuteScalar());
connection.Close();
MessageBox.Show(a.ToString(), "Your FINE is", MessageBoxButtons.OK);
答案 0 :(得分:2)
除可能的SQL Injection
漏洞外;所述错误可能是因为查询中的WHERE
部分;其中Student_ID
是数字,您试图将其与字符串类型数据进行比较。
where Student_ID='" + textsearch.Text + "'"
考虑到您的Student_ID
属于INT
或NUMBER
类型列,请将您的代码更改为如下所示。注意使用参数化查询来避免SQL注入
string sql = "select sum(Fine) from Studentbook where Student_ID = @studentid";
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@studentid", Convert.ToInt32(textsearch.Text.Trim()));