[英]Data type mismatch in criteria expression Access 2013
OleDbCommand computerStatus = new OleDbCommand("update Computer SET Status= 'Occupied' where PcNumber='" + cboComputerNo.Text + "'", con);
computerStatus.ExecuteNonQuery();
this is my code. 这是我的代码。 pcNumber is autonumber i am getting an error it wants me to change the data type to string but i need it to be autonumber.
pcNumber是自动编号,我遇到一个错误,它希望我将数据类型更改为字符串,但我需要将其设为自动编号。
AutoNumber
is auto number . AutoNumber
是自动编号 。 Since it is a numerical value, you don't need to use single quotes with it. 由于它是一个数值,因此您无需在其上使用单引号。
But more important, you should always use parameterized queries . 但更重要的是,您应始终使用参数化查询 。 This kind of string concatenations are open for SQL Injection attacks.
这类字符串连接对SQL注入攻击开放。
Also use using
statement to dispose your OleDbConnection
and OleDbCommand
. 也可以使用
using
语句来处理OleDbConnection
和OleDbCommand
。
using(OleDbConnection con = new OleDbConnection(conString))
using(OleDbCommand computerStatus = con.CreateCommand())
{
computerStatus.CommandText = "update Computer SET Status= ? where PcNumber = ?";
computerStatus.Parameters.AddWithValue("@status", "Occupied");
computerStatus.Parameters.AddWithValue("@number", cboComputerNo.Text);
computerStatus.ExecuteNonQuery();
}
As LarsTech pointed, you may wanna check your cboComputerNo.Text
string is a valid integer with using Int.TryParse
method . 正如LarsTech指出的那样,您可能想使用
Int.TryParse
方法检查cboComputerNo.Text
字符串是否为有效整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.