Foxtable(狐表)用户栏目专家坐堂 → 订单系统中的函数问题


  共有5607人关注过本帖树形打印复制链接

主题:订单系统中的函数问题

帅哥哟,离线,有人找我吗?
ycs5801
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1065 积分:7592 威望:0 精华:0 注册:2009/6/24 9:44:00
订单系统中的函数问题  发帖心情 Post By:2022/12/8 22:42:00 [只看该作者]

       Dim dt As DataTable = Functions.Execute("数据库_执行Sql_返回表格","","sel ect top 1 * from {httpcase} where path=?","",e.Path) '使用参数化查询,避免SQL注入

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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110337 积分:561533 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/8 22:55:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
ycs5801
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1065 积分:7592 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By: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)

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


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110337 积分:561533 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/9 10:51:00 [只看该作者]

内部表,不需要指定数据源

 回到顶部
帅哥哟,离线,有人找我吗?
ycs5801
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1065 积分:7592 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By: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|")这种情况?


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110337 积分:561533 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1065 积分:7592 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By: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,看看值是否已经变化

 

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


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110337 积分:561533 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/10 9:06:00 [只看该作者]

AddNew肯定是新增的,不可能会覆盖旧数据

 回到顶部