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

时间:2014-10-12 12:15:03

标签: c# ms-access insert-update

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

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

1 个答案:

答案 0 :(得分:0)

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

但更重要的是,您应该始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。

还可以使用using statement来处置您的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 method检查cboComputerNo.Text字符串是否为有效整数。

相关问题