在尝试插入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);
}
}
答案 0 :(得分:2)
OleDbType.Integer
应该是一个整数。尝试将comboBox5.Text
解析为int:
cmd.Parameters.AddWithValue("@teller", OleDbType.Integer).Value = int.Parse(comboBox5.Text);
答案 1 :(得分:0)
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;