【发布时间】:2011-11-20 20:27:39
【问题描述】:
我有一个我无法理解的错误。当我调试并尝试运行插入语句时,它会抛出以下异常:
“INSERT 语句中的列数少于 VALUES 子句中指定的值。VALUES 子句中的值数必须与 INSERT 语句中指定的列数相匹配。”
我查看了所有代码,但找不到我犯的错误。
这是查询和周围的代码:
SqlConnection myCon = DBcon.getInstance().conn();
int id = gm.GetID("SELECT ListID from Indkøbsliste");
id++;
Console.WriteLine("LNr: " + listnr);
string streg = GetStregkode(navne);
Console.WriteLine("stregk :" + strege);
string navn = GetVareNavn(strege);
Console.WriteLine("navn :" + navne);
myCon.Open();
string query = "INSERT INTO Indkøbsliste (ListID, ListeNr, Stregkode, Navn, Antal, Pris) Values(" + id + "," + listnr + ", '" + strege + "','" + navn + "'," + il.Antal + ", "+il.Pris+")";
Console.WriteLine(il.Antal+" Antal");
Console.WriteLine(il.Pris+" Pris");
Console.WriteLine(id + " ID");
SqlCommand com = new SqlCommand(query, myCon);
com.ExecuteNonQuery();
com.Dispose();
myCon.Close();
【问题讨论】:
-
ID是自动递增的列吗? -
自动增量列也可以手动插入值,所以这可能不是原因。
-
是的,但前提是在会话中设置了
set identity_insert <table> on- 我认为这不是默认设置。
标签: c# .net sql-server ado.net exception-handling