从Access DB

时间:2019-05-17 14:42:37

标签: c# ms-access select

我正在Access数据库的一个表中搜索一行。该行的字段必须是用户输入的特定值。

使用

OleDbCommand myQuery = new OleDbCommand("Select * from [Job Control] where [Job No] like '%" + job_search_value + "%';", myConn);

我得到了数据,但是所有包含job_search_value值的东西。  我需要的是表行中的字段正好是job_search_value[Job No]字段为Int,并已尝试

OleDbCommand myQuery = new OleDbCommand("Select * from [Job Control] where [Job No]=" + job_search_value + ";", myConn);

OleDbCommand myQuery = new OleDbCommand("Select * from [Job Control] where [Job No]=" + Convert.ToInt32(job_search_value) + ";", myConn);

使用这2条命令,我不会收到任何类似Data mismatch的错误,但是也不会收到任何数据。

1 个答案:

答案 0 :(得分:0)

您应该并且必须使用sql参数来解决问题以及避免SQL注入。试试:

OleDbCommand myQuery = new OleDbCommand("Select * from [Job Control] where [Job No]=@param", myConn);
myQuery.Parameters.Add("@param"SQlDbType.Int).Value = int.Parse(job_search_value);