我在尝试在ms访问数据库中插入客户端的用户ID时收到错误。
我得到的错误是溢出。
当我试图插入它时收到上述错误。
我正在使用这些代码。
OleDbCommand cmd = new OleDbCommand("insert into UserInfo " + "([firstname], [lastname], [gender], [occupation], [expirydate], [UserId], [phoneno]) " + " values('" + txt_FirstName.Text + "','" + txt_LastName.Text + "','" + cmb_Gender.Text + "','" + cmb_Occupation.Text + "','" + txt_expiryDate.Text + "','" + txt_HardDiskId.Text + "','" + txt_PhoneNo.Text + "');", con);
OleDbCommand cmd1 = new OleDbCommand("select * from UserInfo where (HardDiskId='" + txt_HardDiskId.Text + "')", con);
int temp = 0;
try
{
con.Open();
string count = (string)cmd1.ExecuteScalar();
if ((count == "") || (count == null))
{
temp = cmd.ExecuteNonQuery();
if (temp > 0)
{
MessageBox.Show("User ID of " + txt_FirstName.Text + " " + txt_LastName.Text + " has been added");
}
else
{
MessageBox.Show("Record not added");
}
}
else
{
MessageBox.Show("User ID of " + txt_FirstName.Text + " already exists. Try another user ID.");
}
}
答案 0 :(得分:1)
除了对SQL Injection(你应该参数化你的OleDbCommand)开放之外,首先想到的是你正在尝试存储数据的问题。任何文本字段都有名称中的特殊字符或撇号,否则会预先终止您的嵌入式....'“+ nextField +”'...“条目并关闭平衡。
另一个......不知道解析器是否挑剔...但是在值之后的空格,在打开paren之前......“值(”到“值(”。
第三,更有可能的问题是到期日。如果它是一个日期字段,并且您尝试将其作为文本输入,则可能是数据类型转换失败。