2017-01-26 71 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