简体   繁体   English

条件表达式Access 2013中的数据类型不匹配

[英]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语句来处理OleDbConnectionOleDbCommand

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM