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

本文关键字:数据类型 不匹配 2013 表达式 Access 条件 | 更新日期: 2023-09-27 18:26:19

OleDbCommand computerStatus = new OleDbCommand("update Computer SET Status= 'Occupied' where PcNumber='" + cboComputerNo.Text + "'", con);
computerStatus.ExecuteNonQuery();

这是我的代码。 电脑编号是自动编号 我收到一个错误,它希望我将数据类型更改为字符串,但我需要它是自动编号。

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

>AutoNumber是自动编号。由于它是一个数值,因此您无需对它使用单引号。

但更重要的是,应始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。

还可以使用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();
}

正如 LarsTech 所指出的,您可能希望使用Int.TryParse方法检查您的cboComputerNo.Text字符串是否有效整数。