插入记录时“条件表达式中的数据类型不匹配”

时间:2014-04-26 00:17:57

标签: c# ms-access ado.net

  string strConnect = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=record.accdb";


        using (OleDbConnection con = new OleDbConnection(strConnect))
        {
            con.Open();
            using (OleDbCommand cmd = new OleDbCommand("insert into Industry(cName,Amount,amt_type,cheqno,bankname,branchname,tDate) values(@cname,@amount,@amt_type,@chqnum,@bname,@bchname,@tdate)", con))
            {
                cmd.Parameters.AddWithValue("@cname", name_txt.Text);
                cmd.Parameters.AddWithValue("@amount", Convert.ToDouble(amount_txt.Text));
                cmd.Parameters.AddWithValue("@amt_type", amt);
                cmd.Parameters.AddWithValue("@chqnum", cheque_txt.Text);
                cmd.Parameters.AddWithValue("@bname", bank_txt.Text);
                cmd.Parameters.AddWithValue("@bchname", branch_txt.Text);
                cmd.Parameters.AddWithValue("@tdate",     dateTimePicker1.Value.ToShortDateString());

                cmd.ExecuteNonQuery();


            }
            con.Close();

我遇到一个错误,指出类型为#System; System.Data.OleDb.OleDbException'的未处理异常发生在System.Data.dll

其他信息:条件表达式中的数据类型不匹配。 可能的原因是什么和错误是在行cmd.ExecuteNonQuery();.

有两个单选按钮可以在更改的事件上输入输入文本我注意到在检查检查并填写表单的所有细节时它可以工作但是当我检查现金字段并将某些字段留空时它会抛出异常任何帮助会不胜感激。

2 个答案:

答案 0 :(得分:2)

相当明确地指定如下的参数以将其消除为错误:

SqlCommand command = new SqlCommand(commandText,connection);         command.Parameters.Add(“@ ID”,SqlDbType.Int);         command.Parameters [“@ ID”]。值=客户

答案 1 :(得分:1)

您正在使用AddWithValue但是您想将参数转换为double:

cmd.Parameters.AddWithValue("@amount", Convert.ToDouble(amount_txt.Text));

你应该把它留给ADO.NET来匹配正确的数据类型:

cmd.Parameters.AddWithValue("@amount", amount_txt.Text);