以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  订单系统中的函数问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184469)

--  作者:ycs5801
--  发布时间:2022/12/8 22:42:00
--  订单系统中的函数问题
       Dim dt As DataTable = Functions.Execute("数据库_执行Sql_返回表格","","sel ect top 1 * from {httpcase} where path=?","",e.Path) \'使用参数化查询,避免SQL注入

这句黄色部分是需要执行的函数,后边的是什么意思呢?这种格式在帮助中有介绍吗?

--  作者:有点蓝
--  发布时间:2022/12/8 22:55:00
--  
参考:http://www.foxtable.com/webhelp/topics/1486.htm
--  作者:ycs5801
--  发布时间:2022/12/9 10:42:00
--  

Dim connectname As String = Args(0) \'数据源名称

 

这是函数中具体执行的过程,这个第一个参数是数据源名称,但是这里 Dim dt As DataTable = Functions.Execute("数据库_执行Sql_返回表格","","sel ect top 1 * from {httpcase} where path=?","",e.Path)

黄色标记的地方是空,是什么意思?


--  作者:有点蓝
--  发布时间:2022/12/9 10:51:00
--  
内部表,不需要指定数据源
--  作者:ycs5801
--  发布时间:2022/12/9 11:46:00
--  

If Args.Length >= 3 Then
    Dim s As String = Args(2)
    If s Is Nothing Then s = ""
    If s.Contains("|1|") Then canedit  = True
    If s.Contains("|2|") Then isStoredProcedure = True
End If

 

问题1:上述代码中,if不需要以end if结尾吗?

问题2:Args(2)即第三个参数,还是空,什么时候会出现("|1|") 、("|2|")这种情况?


--  作者:有点蓝
--  发布时间:2022/12/9 11:55:00
--  
1、如果只有一行代码,不需要endif

If s Is Nothing Then s = ""
等同于
If s Is Nothing Then 
    s = ""
end if

2、比如返回的datatable需要编辑数据可以
Dim dt As DataTable = Functions.Execute("数据库_执行Sql_返回表格","","sel ect top 1 * from {httpcase} where path=?","|1|",e.Path)
--  作者:ycs5801
--  发布时间:2022/12/9 22:20:00
--  

通过ExecuteReader生成的表也可以增加数据并保存。
如果生成的表仅用于增加数据,那么就没有必要加载数据,生成一个空表即可,例如:

Dim cmd As new SQLCommand
cmd
.ConnectionName = "数据源名称"
Dim
dt As DataTable
cmd
.CommandText = "Se lect * From {表A} Where [_Identify] Is null"  \'生成空表
dt
= cmd.ExecuteReader(True) \'记得将参数设置为True
Dim
dr As DataRow = dt.AddNew()
dr
("第一列") = "Foxtable"
dt
.Save()
DataTables
("表A").Load() \'重新加载表A,看看值是否已经变化

 

这种生成空表然后保存,会不会把原来数据库中的表给覆盖掉?是实现了类似于“插入新值”的功能吗?


--  作者:有点蓝
--  发布时间:2022/12/10 9:06:00
--  
AddNew肯定是新增的,不可能会覆盖旧数据