C#操作SQLite資料庫時出錯總結--錯誤:“Insufficient parameters supplied to the command”
阿新 • • 發佈:2018-12-18
上網找了好久,有的說是引數名字錯了,有的說把"@parameter"改成"?"就可以了。
解決C#操作SQLite資料庫時出現“Insufficient parameters supplied to the command”的錯誤
將如下SQL語句: insert into tbl_stock(Title,Barcode,Price) values(@Title,@Barcode,@Price) 改成: insert into tbl_stock(Title,Barcode,Price) values(?,?,?)
注意:使用?代替@Title,其它等同。
但是我之前用@parameter都可以,所以研究了很久。
結果發現是設定的引數長度太長了,改短就可以了。不知道具體原理。
//插入命令 string comUpdate = "insert into Class (code, className, campus, school, grade, contact, phoneNumber) " + "values(@CODE, @CLASSNAME, @CAMPUS, @SCHOOL, @GRADE, @CONTACT, @PHONENUMBER)"; //這裡的引數PHONENUMBER太長了 SQLiteCommand mycom = db.createCommand(comUpdate); //新增引數 mycom.Parameters.Add(new SQLiteParameter("@CODE", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@CLASSNAME", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@CAMPUS", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@SCHOOL", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@GRADE", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@CONTACT", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@PHONENUMER", DbType.String)); //給引數賦值 mycom.Parameters["@CODE"].Value = code; mycom.Parameters["@CLASSNAME"].Value = className; mycom.Parameters["@CAMPUS"].Value = campus; mycom.Parameters["@SCHOOL"].Value = school; mycom.Parameters["@GRADE"].Value = grade; mycom.Parameters["@CONTACT"].Value = contact; mycom.Parameters["@PHONENUMER"].Value = phoneNumber; //執行新增語句 mycom.ExecuteNonQuery();
將@PHONENUMBER改成@PHONE就可以了
//插入命令 string comUpdate = "insert into Class (code, className, campus, school, grade, contact, phoneNumber) " + "values(@CODE, @CLASSNAME, @CAMPUS, @SCHOOL, @GRADE, @CONTACT, @PHONE)"; SQLiteCommand mycom = db.createCommand(comUpdate); //新增引數 mycom.Parameters.Add(new SQLiteParameter("@CODE", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@CLASSNAME", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@CAMPUS", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@SCHOOL", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@GRADE", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@CONTACT", DbType.String)); mycom.Parameters.Add(new SQLiteParameter("@PHONE", DbType.String)); //給引數賦值 mycom.Parameters["@CODE"].Value = code; mycom.Parameters["@CLASSNAME"].Value = className; mycom.Parameters["@CAMPUS"].Value = campus; mycom.Parameters["@SCHOOL"].Value = school; mycom.Parameters["@GRADE"].Value = grade; mycom.Parameters["@CONTACT"].Value = contact; mycom.Parameters["@PHONE"].Value = phoneNumber; //執行新增語句 mycom.ExecuteNonQuery();
提供一些其它的錯誤原因參考: