2017-01-26 68 views
0

我想使用更新语句来更新某个记录,但我有困难。我想用变量值替换'user'和'timestamp'然而,当我提供内联变量时,我收到一个错误,有人可以帮助我实现这个功能。我使用SQL服务器作为我的dbms。内联更新语句替换字符串与变量

变量:

Dim timeStamp As String = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") 

Dim user As String = GetUserName() 

更新语句:

strsql = strsql & " Update Activity Set userName = 'user', timeDate = 'timeStamp' Where noteKey = " & lngNoteKey 

回答

1
strsql = strsql & " Update Activity Set userName = '" & user & "', timeDate = '" & timeStamp & "' Where noteKey = " & lngNoteKey 

尝试。将数据连接到字符串中。

+0

如何?他在这种情况下提供了价值。是的,如果是用户提供,则不应该。我更喜欢你的答案。在VB/VBA中,我不太关注SQL,因此我缺乏知识。我主要处理PHP,我知道使用数据绑定。 – Thomas

+0

这不是SQL注入漏洞,因为输入不是来自用户,但如果你走这条路线,你应该非常小心,当用户提供变量时不要使用它。 –

+0

是的,你是对的。对不起 - 我解开了我的投票并改变了我的评论。 –

2

你会想要使用parameterized queries来做到这一点。

strsql = strsql & " Update Activity Set userName = @user, timeDate = @date Where noteKey = " & lngNoteKey 

,然后添加参数,当你执行它的命令:

yourQuery.Parameters.Add(new ObjectParameter("user", user)); 
yourQuery.Parameters.Add(new ObjectParameter("date", timeStamp)); 
+0

查询后添加参数?我不确定在哪里添加参数。 – jamHud

+0

老实说,如果您在执行查询之前添加参数,则前后添加它们并不重要。为了使它更容易阅读,我会在添加它们之后。看看我在我的答案开始时引用的链接 - 他们继续了解如何使用参数化查询开始完成。 –

+0

我会检查链接。非常感谢你。 – jamHud