以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  SQL server用参数化报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196025)

--  作者:lin98
--  发布时间:2025/3/24 9:03:00
--  SQL server用参数化报错
SQGL server用参数化
Dim SqGl = "SelecGt  a.单号,a.客户,b.单号,b.料号,c.用户ID
 from 表A  AS    
a    
INNER JOIN 表B  AS    b   on    a.单号 =b.单号
INNER JOIN 表c   AS    c   on    c.用户ID =@c.用户ID "    
报错提示:没有@c.用户ID,如何改?

--  作者:有点蓝
--  发布时间:2025/3/24 9:07:00
--  
这个不合理。表C和其它表是通过什么列关联的?
--  作者:lin98
--  发布时间:2025/3/24 9:34:00
--  
    Dim SqGl2 = "SelecGt   " & _
    "a.*, b.编号, b.类型,b.名称,c.关系ID " & _ 
    "From  主表_tb as  a  " & _ 
    "Join  主表A_tb  as  b  " & _ 
    "On  (a.编号 = b.编号) " & _ 
    "LEFT JOIN  用户表 as  c " & _
    "ON   b.用户ID = c.用户ID " & _
    " Where " & _ 
    "c.关系ID = \'" & _关系ID & "\'  ;" \' SQL带参数,防止SQL注入
    Dim dt2 As System.Data.DataTable = db.ExecuteDataSet(Sql2, HySql.ParameterPair.GetPair("c.关系ID", __关系ID)).Tables(0)
改为下面,报错
 Dim SqGl2 = "SelecGt   " & _
    "a.*, b.编号, b.类型,b.名称,c.关系ID " & _ 
    "From  主表_tb as  a  " & _ 
    "Join  主表A_tb  as  b  " & _ 
    "On  (a.编号 = b.编号) " & _ 
    "LEFT JOIN  用户表 as  c " & _
    "ON   b.用户ID = c.用户ID " & _
    " Where " & _ 
    "c.关系ID = @c.关系ID  ;" \' SQL带参数,防止SQL注入
    Dim dt2 As System.Data.DataTable = db.ExecuteDataSet(Sql2, HySql.ParameterPair.GetPair("c.关系ID", __关系ID)).Tables(0)


--  作者:有点蓝
--  发布时间:2025/3/24 9:38:00
--  
   "c.关系ID = @关系ID  ;" \' SQL带参数,防止SQL注入
--  作者:lin98
--  发布时间:2025/3/24 10:09:00
--  
改为执行报错
\'.\' 附近有语法错误。
必须声明标量变量 "@关系ID"。

--  作者:有点蓝
--  发布时间:2025/3/24 10:17:00
--  

[此贴子已经被作者于2025/3/24 11:54:44编辑过]

--  作者:lin98
--  发布时间:2025/3/24 11:08:00
--  
 Dim SqGl2 = "SelecGt   " & _
    "a.*, b.编号, b.类型,b.名称,c.关系ID " & _ 
    "From  主表_tb as  a  " & _ 
    "Join  主表A_tb  as  b  " & _ 
    "On  (a.编号 = b.编号) " & _ 
    "LEFT JOIN  用户表 as  c " & _
    "ON   b.用户ID = c.用户ID " & _
    " Where " & _ 
    "c.关系ID = @c.关系ID   And (审核=\'未审核\')    And (a.日期   BETWEEN DATE_SUB(NOW(), INTERVAL 2 MONTH) AND NOW() )   ;" \' 
    Dim dt2 As System.Data.DataTable = db.ExecuteDataSet(Sql2, HySql.ParameterPair.GetPair("c.关系ID", __关系ID)).Tables(0)
上面代码执行后,报错提示下面,如何改正确?
\'?\' 附近有语法错误。

--  作者:有点蓝
--  发布时间:2025/3/24 11:11:00
--  
    "c.关系ID = ?   And (审核=\'未审核\')    And (a.日期   BETWEEN DATE_SUB(NOW(), INTERVAL 2 MONTH) AND NOW() )   ;" \' 
    Dim dt2 As System.Data.DataTable = db.ExecuteDataSet(Sql2, HySql.ParameterPair.GetPair("关系ID", __关系ID)).Tables(0)

--  作者:lin98
--  发布时间:2025/3/24 11:43:00
--  
报错
\'?\' 附近有语法错误。
--  作者:有点蓝
--  发布时间:2025/3/24 11:55:00
--  
"c.关系ID = @关系ID   And (审核=\'未审核\')    And (a.日期   BETWEEN DATE_SUB(NOW(), INTERVAL 2 MONTH) AND NOW() )   ;" \' 
    Dim dt2 As System.Data.DataTable = db.ExecuteDataSet(Sql2, HySql.ParameterPair.GetPair("关系ID", __关系ID)).Tables(0)