Sql 异常:由于在CommandText中使用了文本类型,因此没有为一个或多个参数VB.NET提供值
我使用下面的代码来创建,以将我的DataTable内容保存到mdb数据库并清空mdb数据库,因此首先我创建datata表,当我尝试插入数据时,我得到以下错误:没有为一个或多个参数指定值,现在我认为此错误是由于使用本文中提到的文本造成的 但我不确定如何修复它,这是代码,我在注释行中得到了异常Sql 异常:由于在CommandText中使用了文本类型,因此没有为一个或多个参数VB.NET提供值,sql,vb.net,ms-access,Sql,Vb.net,Ms Access,我使用下面的代码来创建,以将我的DataTable内容保存到mdb数据库并清空mdb数据库,因此首先我创建datata表,当我尝试插入数据时,我得到以下错误:没有为一个或多个参数指定值,现在我认为此错误是由于使用本文中提到的文本造成的 但我不确定如何修复它,这是代码,我在注释行中得到了异常 Dim cmd = cnn.CreateCommand cmd.CommandText = "CREATE TABLE productstable(supplierid Int
Dim cmd = cnn.CreateCommand
cmd.CommandText = "CREATE TABLE productstable(supplierid Integer ,catalogid Integer ,ccode Text ,cname Text,pother2 Text, pother3 Double, cprice Double, rank Integer, rankchange Integer , PD Double, PDP Double , TPD Double, TPDP Double, sprice Double, msprice Double, minprice Double, sopriceDB Double, pother4 Long, usedsuppliermargin Double, cimageurl Text, ccategory Integer, pricetaggroup Byte , spricemargingroup Byte)"
cmd.ExecuteNonQuery()
Dim ocmd As New OleDbCommand("INSERT INTO productstable(supplierid , catalogid, ccode,cname,pother2,pother3,cprice,rank,rankchange,PD,PDP,TPD,TPDP,sprice,msprice,minprice,sopriceDB,pother4,usedsuppliermargin,cimageurl,ccategory,pricetaggroup,spricemargingroup) VALUES (@supplierid , @catalogid, @ccode, @cname, @pother2, @pother3, @cprice, @rank, @rankchange, @PD, @PDP, @TPD, @TPDP, @sprice, @msprice, @minprice, @sopriceDB, @pother4, @usedsuppliermargin,@cimageurl,@ccategory,@pricetaggroup,@spricemargingroup)", cnn)
For i = 0 To mainDatatable.Rows.Count - 1
ocmd.Parameters.Add(New OleDbParameter("@supplierid", mainDatatable.Rows(i)("supplierid")))
ocmd.Parameters.Add(New OleDbParameter("@catalogid", mainDatatable.Rows(i)("catalogid")))
ocmd.Parameters.Add(New OleDbParameter("@ccode", mainDatatable.Rows(i)("ccode")))
ocmd.Parameters.Add(New OleDbParameter("@cname", mainDatatable.Rows(i)("cname")))
ocmd.Parameters.Add(New OleDbParameter("@pother2", mainDatatable.Rows(i)("pother2")))
ocmd.Parameters.Add(New OleDbParameter("@pother3", mainDatatable.Rows(i)("pother3")))
ocmd.Parameters.Add(New OleDbParameter("@cprice", mainDatatable.Rows(i)("cprice")))
ocmd.Parameters.Add(New OleDbParameter("@rank", mainDatatable.Rows(i)("rank")))
ocmd.Parameters.Add(New OleDbParameter("@rankchange", mainDatatable.Rows(i)("rankchange")))
ocmd.Parameters.Add(New OleDbParameter("@PD", mainDatatable.Rows(i)("PD")))
ocmd.Parameters.Add(New OleDbParameter("@PDP", mainDatatable.Rows(i)("PDP")))
ocmd.Parameters.Add(New OleDbParameter("@TPD", mainDatatable.Rows(i)("TPD")))
ocmd.Parameters.Add(New OleDbParameter("@TPDP", mainDatatable.Rows(i)("TPDP")))
ocmd.Parameters.Add(New OleDbParameter("@sprice", mainDatatable.Rows(i)("sprice")))
ocmd.Parameters.Add(New OleDbParameter("@msprice", mainDatatable.Rows(i)("msprice")))
ocmd.Parameters.Add(New OleDbParameter("@minprice", mainDatatable.Rows(i)("minprice")))
ocmd.Parameters.Add(New OleDbParameter("@sopriceDP", mainDatatable.Rows(i)("sopriceDP")))
ocmd.Parameters.Add(New OleDbParameter("@pother4", mainDatatable.Rows(i)("pother4")))
ocmd.Parameters.Add(New OleDbParameter("@usedsuppliermargin", mainDatatable.Rows(i)("usedsuppliermargin")))
ocmd.Parameters.Add(New OleDbParameter("@cimageurl", mainDatatable.Rows(i)("cimageurl")))
ocmd.Parameters.Add(New OleDbParameter("@ccategory", mainDatatable.Rows(i)("ccategory")))
ocmd.Parameters.Add(New OleDbParameter("@pricetaggroup", mainDatatable.Rows(i)("pricetaggroup")))
ocmd.Parameters.Add(New OleDbParameter("@spricemargingroup", mainDatatable.Rows(i)("spricemargingroup")))
ocmd.ExecuteNonQuery()
ocmd.Parameters.Clear()
Next
必须添加参数的应该是
ocmd
,而不是cmd
ocmd.Parameters.Add(New OleDbParameter("@s....
还有一件事,您必须清除ExecuteNonQuery
For i = 0 To mainDatatable.Rows.Count - 1
ocmd.Parameters.Add(New OleDbParameter("@s....
....
ocmd.ExecuteNonQuery()
ocmd.Parameters.Clear()
Next
我不知道这是怎么回事如果你把它放在问题里,看这一行
cmd.Parameters.Add(New OleDbParameter("@sopriceDP", mainDatatable.Rows(i)("sopriceDP")))
并与命令进行比较
..@msprice, @minprice, @sopriceDB, @pother4,..
一个是
@sopriceDP
,另一个是@sopriceDB
,谢谢,我就是看不见@用户1570048您需要在每次ExecuteNonQuery
您对问题的编辑使给出的答案看起来很奇怪之后清除参数。当我看代码时,吴宇森给出的答案似乎很奇怪。现在我明白为什么了。