我已经包含了以下代码。我有一个我想要更新的sql记录。我一直收到消息
")"
附近的语法不正确
我已经尝试过我能想到的一切,而且我没有看到任何错误,有人可以告诉我它是什么吗?
Sub UpdateData(ByVal PHASE1_COUNT_VAR As String, ByVal PHASE1_GOAL_VAR As String, ByVal PHASE1_PERCENTAGE_VAR As String, ByVal PHASE2_COUNT_VAR As String, ByVal PHASE2_GOAL_VAR As String, ByVal PHASE2_PERCENTAGE_VAR As String, ByVal PLANT_COUNT_VAR As String, ByVal PLANT_GOAL_VAR As String, ByVal PLANT_PERCENTAGE_VAR As String, ByVal SHIFT_VAR As String, ByVal CURRENT_DATETIME_VAR As String)
Dim sqlconn As New SqlClient.SqlConnection
sqlconn.ConnectionString = "Data Source=MESTEST\ONLINE;Integrated Security=False;User ID=SPIRE_SUN_SIMULATOR;Password=SPIRE_SUN_SIMULATOR;Connect TimeOut=15;Encrypt=False;TrustServerCertificate=False"
Dim INDEX_NUM_VAR As Integer = 1
Dim myCommand As SqlCommand
'parametrized update sql command
Try
sqlconn.Open()
myCommand = New SqlCommand("UPDATE dbo.PRODUCTION_DATA SET PHASE1_COUNT = @PHASE1_COUNT, PHASE1_GOAL = @PHASE1_GOAL, PHASE1_PERCENTAGE = @PHASE1_PERCENTAGE, PHASE2_COUNT = @PHASE2_COUNT, PHASE2_GOAL = @PHASE2_GOAL, PHASE2_PERCENTAGE = @PHASE2_PERCENTAGE, PLANT_COUNT = @PLANT_COUNT, PLANT_GOAL = @PLANT_GOAL, PLANT_PERCENTAGE = @PLANT_PERCENTAGE, SHIFT = @SHIFT, CURRENT_DATETIME = @CURRENT_DATETIME where INDEX_NUM = @INDEX_NUM)", sqlconn)
myCommand.Parameters.AddWithValue("@PHASE1_COUNT", PHASE1_COUNT_VAR)
myCommand.Parameters.AddWithValue("@PHASE1_GOAL", PHASE1_GOAL_VAR)
myCommand.Parameters.AddWithValue("@PHASE1_PERCENTAGE", PHASE1_PERCENTAGE_VAR)
myCommand.Parameters.AddWithValue("@PHASE2_COUNT", PHASE2_COUNT_VAR)
myCommand.Parameters.AddWithValue("@PHASE2_GOAL", PHASE2_GOAL_VAR)
myCommand.Parameters.AddWithValue("@PHASE2_PERCENTAGE", PHASE2_PERCENTAGE_VAR)
myCommand.Parameters.AddWithValue("@PLANT_COUNT", PLANT_COUNT_VAR)
myCommand.Parameters.AddWithValue("@PLANT_GOAL", PLANT_GOAL_VAR)
myCommand.Parameters.AddWithValue("@PLANT_PERCENTAGE", PLANT_PERCENTAGE_VAR)
myCommand.Parameters.AddWithValue("@SHIFT", SHIFT_VAR)
myCommand.Parameters.AddWithValue("@CURRENT_DATETIME", CURRENT_DATETIME_VAR)
myCommand.Parameters.AddWithValue("@INDEX_NUM", INDEX_NUM_VAR)
myCommand.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
答案 0 :(得分:1)
在更新SQL结束时有一个冗余的右括号,将其删除:
Dim cmdText As String = <![CDATA[
UPDATE dbo.production_data
SET phase1_count = @PHASE1_COUNT,
phase1_goal = @PHASE1_GOAL,
phase1_percentage = @PHASE1_PERCENTAGE,
phase2_count = @PHASE2_COUNT,
phase2_goal = @PHASE2_GOAL,
phase2_percentage = @PHASE2_PERCENTAGE,
plant_count = @PLANT_COUNT,
plant_goal = @PLANT_GOAL,
plant_percentage = @PLANT_PERCENTAGE,
shift = @SHIFT,
current_datetime = @CURRENT_DATETIME
WHERE index_num = @INDEX_NUM
]]>.Value
myCommand = New SqlCommand(cmdText, sqlconn)
(为了更好的可读性,我使用了VB.NET伪造的逐字字符串文字。你需要添加Imports System.Xml.Linq
)
答案 1 :(得分:1)
正如错误所说:
INDEX_NUM = @INDEX_NUM)
有一个尾随)
此外,对于约定,您不应该对变量使用大写,而是使用常量。并且不需要使用_VAR对它们进行后缀。连接应该关闭。例外情况太笼统了。 :)