1. 程式人生 > >C#操作SQLite資料庫時出錯總結--錯誤:“Insufficient parameters supplied to the command”

C#操作SQLite資料庫時出錯總結--錯誤:“Insufficient parameters supplied to the command”

上網找了好久,有的說是引數名字錯了,有的說把"@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();

提供一些其它的錯誤原因參考: