使用Access DB的数据类型不匹配

本文关键字:数据类型 不匹配 DB Access 使用 | 更新日期: 2023-09-27 18:05:48

当试图插入我的Access 2010表时,我一直得到'数据类型不匹配的标准表达式'。该表的字段名为:GradeKey -自动编号,等级-文字,评论-文本,TellerNum -数字,TestName -文本。TestName也是来自另一个表的外键。关于我需要使用什么来修复数据类型不匹配,有什么想法吗?

using (OleDbConnection con = new OleDbConnection(constring))
        {
            try
            {
                string cmdstring = "INSERT INTO GRADE (Grade, Comments, TellerNum, TestName) VALUES (@grade, @comments, @teller, @test)";
                using (OleDbCommand cmd = new OleDbCommand(cmdstring, con))
                {
                    cmd.Parameters.AddWithValue("@teller", OleDbType.Integer).Value = comboBox5.Text;
                    cmd.Parameters.AddWithValue("@grade", OleDbType.Char).Value = textBox7.Text;
                    cmd.Parameters.AddWithValue("@comments", OleDbType.Char).Value = textBox10.Text;
                    cmd.Parameters.AddWithValue("@test", OleDbType.Char).Value = comboBox16.Text;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("Submitted Successfully");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed due to " + ex.Message);
            }
        }

使用Access DB的数据类型不匹配

OleDbType.Integer应为整数。尝试将comboBox5.Text解析为int:

cmd.Parameters.AddWithValue("@teller", OleDbType.Integer).Value = int.Parse(comboBox5.Text);

OleDb不支持命名参数。它只支持位置参数。您需要按照参数在查询中出现的顺序添加参数:

cmd.Parameters.AddWithValue("@grade", OleDbType.Char).Value = textBox7.Text;
cmd.Parameters.AddWithValue("@comments", OleDbType.Char).Value = textBox10.Text;
cmd.Parameters.AddWithValue("@teller", OleDbType.Integer).Value = comboBox5.Text;
cmd.Parameters.AddWithValue("@test", OleDbType.Char).Value = comboBox16.Text;