C# 2013年标准表达式访问中的数据类型不匹配
这是我的密码。pcNumber是自动编号我收到一个错误,它希望我将数据类型更改为字符串,但我需要它是自动编号 是自动的数字。因为它是一个数值,所以不需要使用单引号 但更重要的是,您应该始终使用。这种类型的字符串连接对攻击是开放的 还可用于处理C# 2013年标准表达式访问中的数据类型不匹配,c#,ms-access,insert-update,C#,Ms Access,Insert Update,这是我的密码。pcNumber是自动编号我收到一个错误,它希望我将数据类型更改为字符串,但我需要它是自动编号 是自动的数字。因为它是一个数值,所以不需要使用单引号 但更重要的是,您应该始终使用。这种类型的字符串连接对攻击是开放的 还可用于处理OleDbConnection和OleDbCommand OleDbCommand computerStatus = new OleDbCommand("update Computer SET Status= 'Occupied' where PcNumbe
OleDbConnection
和OleDbCommand
OleDbCommand computerStatus = new OleDbCommand("update Computer SET Status= 'Occupied' where PcNumber='" + cboComputerNo.Text + "'", con);
computerStatus.ExecuteNonQuery();
正如LarsTech所指出的,您可能需要检查
cboComputerNo.Text
字符串是否为有效整数,并使用。使用参数以避免sql注入。使用int.TryParse将文本转换为数字。已使用的TryParse和int.parse在我第一次使用参数时不起作用。为什么我需要使用?为什么不在代码中缩小它?@AllanPatrickCaldito使用语句dispose unmanagement resources。检查以下问题:以及
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();
}