以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  参数化SQLCommand的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=195914)

--  作者:lgz518
--  发布时间:2025/3/20 16:32:00
--  参数化SQLCommand的问题
参数化SQGLCommand
用SelGect语句获取的订单的品名、规格:如何动态获取指定的字段?

Dim cmd As new SQGLCommand
cmd.C
cmd.CommandText = "SELECGT * FROM {订单} WHERE 品名= ? AND 规格= ?"
cmd.Parameters.Add("@品名",#动态#)
cmd.Parameters.Add("@规格",#3/31/2018#)
Dim dt As DataTable = cmd.ExecuteReader()

--  作者:有点蓝
--  发布时间:2025/3/20 16:34:00
--  
怎么个动态法?举例说明一下
--  作者:lgz518
--  发布时间:2025/3/20 16:57:00
--  
cmd.Parameters.Add("@品名",#动态#)
cmd.Parameters.Add("@规格",#3/31/2018#)
红字是固定,在实际应用不可这样,它是应是字段,
cmd.Parameters.Add("@品名",品名)
cmd.Parameters.Add("@规格",规格)
没理解上面意思,上面是可以实现?
或说用参数查询订单的品名,和规格,如何实现?因为用字符拼,会有SQL渗入

--  作者:有点蓝
--  发布时间:2025/3/20 16:59:00
--  
要取表格数据?
cmd.Parameters.Add("@品名",dr("品名"))
--  作者:lgz518
--  发布时间:2025/3/20 18:35:00
--  
是的,
cmd.CommandText = "SelecGt * From {Users} Where [Name] = \'" & UserName & "\'"
这个字符拼,会不会有SQL渗入的风险?如果有,如何改?

--  作者:有点蓝
--  发布时间:2025/3/20 19:58:00
--  
只有使用参数化才能解决
--  作者:lgz518
--  发布时间:2025/3/20 22:35:00
--  
Dim cmd As new SQGLCommand
cmd.C

cmd.CommandText ="SelecGt * From {Users} Where [Name] = \'" & UserName & "\'"改为
cmd.CommandText ="SelecGt * From {Users} Where [Name] = ?\'"
cmd.Parameters.Add("@Name",dr("Name"))

Dim dt As DataTable = cmd.ExecuteReader()
是这样?

--  作者:有点蓝
--  发布时间:2025/3/20 22:51:00
--  
Dim cmd As new SQGLCommand
cmd.C
cmd.CommandText ="Select * From {Users} Where [Name] = ?"
cmd.Parameters.Add("@Name",UserName)
Dim dt As DataTable = cmd.ExecuteReader()

--  作者:lgz518
--  发布时间:2025/3/21 10:11:00
--  
cmd.CommandText ="Select * From {Users} Where [Name] = ?  AND  [单号] = ?"
cmd.Parameters.Add("@Name",UserName)
cmd.Parameters.Add("@单号",订单单号)
Dim dt As DataTable = cmd.ExecuteReader()
cmd.Parameters.Add("@Name",UserName)
cmd.Parameters.Add("@单号",dr("单号"))
问题一:@Name是订单表的字段?UserName是@Name的变量?@单号是订单表的字段?,dr("单号")是字段?蓝代码是要显示条件的字段?@Name中是SQL2008固有写法:@+字段,,UserName是变量或表的字段名?
问题二:Dim dt As DataTable = cmd.ExecuteReader(),窗口上订单表是副表或SQLTable,查询结果是Dim dt As DataTable = cmd.ExecuteReader(窗口1-Table1)?

--  作者:有点蓝
--  发布时间:2025/3/21 10:23:00
--  
1、Parameters添加的顺序严格对应问号的顺序

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

Parameters的语法为:cmd.Parameters.Add("@列名","对应这个列需要传入的数据")

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

2、绑定到表控件的DataSource即可:http://www.foxtable.com/webhelp/topics/1909.htm