参数化查询的问题

这个逗b 2017-03-28 11:25:27


这里插入的 时候出错


sql中运行没有问题 可以执行插入

上面是赋值

下面附上代码

Dim cmd As ADODB.Command = New ADODB.Command
Dim cnn As ADODB.Connection
cnn = New ADODB.Connection
cnn.ConnectionString = sConString
cnn.ConnectionTimeout = 30
cnn.Open()
cmd.ActiveConnection = cnn
cmd.CommandText = "Insert into T_PRODUCT(F_PRDID,F_PRTID,F_PRDNO,F_PRDNAME,F_PRDDESC,F_PRDALIAS,F_PRDMEMO) values ((select abs(max(F_PRDID)+1) from T_PRODUCT),@F_PRTID,@F_PRDNO,@F_PRDNAME,@F_PRDDESC,@F_PRDALIAS,@F_PRDMEMO)"
cmd.CommandType = 1
cmd.Parameters.Append(cmd.CreateParameter("@F_PRTID", 3, 1, 10, ComboBox1.SelectedValue))
cmd.Parameters.Append(cmd.CreateParameter("@F_PRDNO", 129, 1, 10, TextBox1.Text))
cmd.Parameters.Append(cmd.CreateParameter("@F_PRDNAME", 129, 1, 120, TextBox4.Text))
cmd.Parameters.Append(cmd.CreateParameter("@F_PRDDESC", 129, 1, 150, "qqq"))
cmd.Parameters.Append(cmd.CreateParameter("@F_PRDALIAS", 129, 1, 150, TextBox2.Text))
cmd.Parameters.Append(cmd.CreateParameter("@F_PRDMEMO", 129, 1, 200, TextBox3.Text))
‘Dim qsql As String = " '" & ComboBox1.SelectedValue.ToString & "','" & TextBox1.Text & "' ,'" & TextBox4.Text & "',qqq,'" & TextBox2.Text & "','" & TextBox3.Text & ""
cmd.Execute()
cnn.Close()

还请各位大佬指正了
...全文
194 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2017-03-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhe_noob 的回复:]刚好这个不是很熟 大佬的意思使用 SqlCommand好么[/Quote]
ADODB 是通用组件,Command 和后台数据库无关,它的SQL语法就是用 ? 定义参数的。
SqlCommand 是专用组件,遵循T-SQL语法,用 @ 开头的变量定义参数。
千万不能混淆啊。
这个逗b 2017-03-28
  • 打赏
  • 举报
回复
换SqlCommand解决了 还是谢谢各位大佬
这个逗b 2017-03-28
  • 打赏
  • 举报
回复
引用 6 楼 shingoscar 的回复:
说明这个prtid没值啊
为什么会没值呢
这个逗b 2017-03-28
  • 打赏
  • 举报
回复
引用 7 楼 Tiger_Zhao 的回复:
SQL 中要用6个 ? 代替6个参数名。 又:VB.Net 为什么不用自带 SqlCommand 而用古老的 ADODB.Command 又:大量的魔法数
刚好这个不是很熟 大佬的意思使用 SqlCommand好么
Tiger_Zhao 2017-03-28
  • 打赏
  • 举报
回复
SQL 中要用6个 ? 代替6个参数名。

又:VB.Net 为什么不用自带 SqlCommand 而用古老的 ADODB.Command
又:大量的魔法数
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
说明这个prtid没值啊
这个逗b 2017-03-28
  • 打赏
  • 举报
回复
引用 4 楼 Chinajiyong 的回复:
很明显 cmd.CommandText = "Insert into T_PRODUCT(F_PRDIDF_PRTID,F_PRDNO,F_PRDNAME,F_PRDDESC,F_PRDALIAS,F_PRDMEMO) values ((select abs(max(F_PRDID)+1) from T_PRODUCT),@F_PRTID,@F_PRDNO,@F_PRDNAME,@F_PRDDESC,@F_PRDALIAS,@F_PRDMEMO)" 这里是中文逗号 另外到底是F_PRDID还是F_PRTID哦,自己检查
大佬 逗号的问题我改了 你看看楼上新的报错
EnForGrass 2017-03-28
  • 打赏
  • 举报
回复
很明显 cmd.CommandText = "Insert into T_PRODUCT(F_PRDIDF_PRTID,F_PRDNO,F_PRDNAME,F_PRDDESC,F_PRDALIAS,F_PRDMEMO) values ((select abs(max(F_PRDID)+1) from T_PRODUCT),@F_PRTID,@F_PRDNO,@F_PRDNAME,@F_PRDDESC,@F_PRDALIAS,@F_PRDMEMO)" 这里是中文逗号 另外到底是F_PRDID还是F_PRTID哦,自己检查
这个逗b 2017-03-28
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
有个全角的逗号,只能说这么多了。



刚才没仔细看 语法没错了 但是这里出错了
这个逗b 2017-03-28
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
有个全角的逗号,只能说这么多了。
改了之后还是一样的啊
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
有个全角的逗号,只能说这么多了。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧