OLEDB中的OverFlow异常

时间:2011-12-05 11:47:34

标签: c# winforms ms-access oledb

我在尝试在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.");
            }
        }

1 个答案:

答案 0 :(得分:1)

除了对SQL Injection(你应该参数化你的OleDbCommand)开放之外,首先想到的是你正在尝试存储数据的问题。任何文本字段都有名称中的特殊字符或撇号,否则会预先终止您的嵌入式....'“+ nextField +”'...“条目并关闭平衡。

另一个......不知道解析器是否挑剔...但是在值之后的空格,在打开paren之前......“值(”到“值(”。

第三,更有可能的问题是到期日。如果它是一个日期字段,并且您尝试将其作为文本输入,则可能是数据类型转换失败。