以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动增加行问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192958)

--  作者:ycs5801
--  发布时间:2024/8/5 14:58:00
--  自动增加行问题
Dim openid As String

If e.Request.Headers("User-Agent").ToLower.Contains("micromessenger") Then \'如果是微信登录
    If e.Cookies.ContainsKey("openid1") Then
        openid = e.Cookies("openid1")
    Else
        openid = Functions.Execute("getopenid", e) 
        wb.AppendCookie("openid1", openid) \'向cookie中写入openid  
        Dim dropenid As DataRow = DataTables("登录用户").sqlfind("openid=\'" & openid & "\'")
        If dropenid Is Nothing Then
            Dim dropen As DataRow = DataTables("登录用户").SQLAddNew()
            dropen("openid") = openid
            
            dropen("新增时间") = Date.now()
            dropen.Save() 
        End If
    End If
End If
。。。。
。。。。
。。。。
这段代码放在某个函数开头,实现功能是,当打开函数时,首先判断cookies中是否包含openid1,如果有直接赋值给openid变量,如果没有则生成openid,然后判断这个openid在表中是否存在,如果不存在则增加一行并写入。
现在问题是总会在表中增加了一些空行,空行中openid列是空,单新增时间有值,请问我这个写法哪里不周全?

--  作者:有点蓝
--  发布时间:2024/8/5 15:31:00
--  
改为

Dim dropen As DataRow = DataTables("登录用户").AddNew()

--  作者:有点蓝
--  发布时间:2024/8/5 15:31:00
--  
如果是异步,改为使用SQLcommand插入数据
--  作者:ycs5801
--  发布时间:2024/8/5 16:34:00
--  
 有没有可能即使容纳了e.Cookies.ContainsKey("openid1"),但是e.cookies("openid1")的值是空,排除直接给e.cookies("openid1")赋空值。
--  作者:有点蓝
--  发布时间:2024/8/5 16:40:00
--  
如果是空的,说下面函数没有返回openid值

openid = Functions.Execute("getopenid", e)