使用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);
}
}
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;