c#中的数据类型不匹配

时间:2015-09-03 20:33:03

标签: c# database

为什么我的代码会显示此消息

  

标准表达式中的数据类型不匹配。

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

1 个答案:

答案 0 :(得分:2)

除可能的SQL Injection漏洞外;所述错误可能是因为查询中的WHERE部分;其中Student_ID是数字,您试图将其与字符串类型数据进行比较。

where Student_ID='" + textsearch.Text + "'"

考虑到您的Student_ID属于INTNUMBER类型列,请将您的代码更改为如下所示。注意使用参数化查询来避免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()));