Foxtable常见参数化SQL语法模板

发表日期: 2021-08-06

1.插入Insert

Dim cmd As new SQLCommand
cmd.ConnectionName = "数据源名称"
cmd.CommandText = "Insert Into 订单 (客户, 日期, 订单编号) Values(?,?,?)"
cmd.Parameters.Add("@客户","01")
cmd.Parameters.Add("@日期",Date.Today)
cmd.Parameters.Add("@订单编号",100)
cmd.ExecuteNonQuery

2.更新Update

Dim cmd As new SQLCommand
cmd.ConnectionName = "DB"
cmd.CommandText = "Update 订单 SET 折扣 = ?,单价 = ? Where 数量 > ?"
cmd.Parameters.Add("@折扣",0.15)
cmd.Parameters.Add("@单价",5)
cmd.Parameters.Add("@数量",500)
cmd.ExecuteNonQuery

2.1可靠性要求

注意,Sql参数化只能传入确定可靠的值,例如设置单价=5,如果想拼接单价增加某个数,只能在sql里拼接

错误写法:

cmd.CommandText = "Update 订单 Set 单价 = ? WHERE 数量 > ?"
cmd.Parameters.Add("@单价","单价 + " & dr("我的值"))
...

正确写法:

cmd.CommandText = "Update 订单 Set 单价 = 单价 + ? WHERE 数量 > ?"
cmd.Parameters.Add("@单价",dr("我的值"))
...

2.2清空日期

纯Sql写法 

Update 订单 Set 日期 =null

参数化写法:

cmd.CommandText = "Update 订单 Set 日期 = ? WHERE 数量 > ?"
cmd.Parameters.Add("@日期",Nothing)

3.删除Delete

Dim cmd As new SQLCommand
cmd.ConnectionName = "DB"
cmd.CommandText = "Delete From 订单 Where 订单编号 = ?"
cmd.Parameters.Add("@订单编号",100)
cmd.ExecuteNonQuery

4.查询Select

Dim cmd As new SQLCommand
cmd.ConnectionName = "DB"
cmd.CommandText = "Select * From {订单} Where 日期 >= ? And 日期 <= ?"
cmd.Parameters.Add("@开始日期",#2/1/2018#)
cmd.Parameters.Add("@结束日期",#3/31/2018#)
Dim dt As DataTable = cmd.ExecuteReader()

5.模糊查询

cmd.CommandText="Select * from CustomerInfo where Name like ? "
cmd.Parameters.Add("@Name","%" & res("Name").ToString & "%" ) '注意不需要分号!
dt= cmd.ExecuteReader

如果只需要前10条,可以

Select TOP 10 * from CustomerInfo

6.使用In语法

6.1单表in

单表里某个字段in一些内容,只能自己循环拼接,参考

Dim ja As JArray = rjo("StateArray") 
Dim ls As String         
For i As Integer = 0 To ja.Count-1            
    ls &= " State = ? or"
    cmd.Parameters.Add("@State" & i ,ja(i).ToString)
Next  
ls = ls.TrimEnd("r")
ls = ls.TrimEnd("o")
filter &= " and (" & ls & ")"

6.1连表in

其实in并不是能用,而是参数化里的?必须指代某个清晰的元素,让sql解释器能够识别

cmd.CommandText="Select * from StoreOutInfo where ID in (Select StoreOutID from StoreOutDetail1 where Name like ? ) "
cmd.Parameters.Add("@Name","%" & res("Name").ToString & "%" ) '注意不需要分号!
dt= cmd.ExecuteReader



随便看看

Copyright © 2016-2022 江门蓬江区华越科技公司 版权所有 | 承接软件定制开发,欢迎联系
粤ICP备17073215号