以文本方式查看主题 - 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添加的顺序严格对应问号的顺序 |