2014-03-12 209 views
-1

有谁能够告诉我,为什么下面的代码产生错误:附近有语法错误“(”

cQueryIS = "UPDATE Additional (StaffEUPN, Class, Additional1, Additional2, Additional3, Additional4,AdditionalLarge1, AdditionalLarge2, AdditionalLarge3, AdditionalLarge4) " 

cQueryIS &= "VALUES (@cSTEupn, @cClass, @cAdditional1, @cAdditional2, @cAdditional3, @cAdditional4, @cAdditionalLarge1, @cAdditionalLarge2, @cAdditionalLarge3, @cAdditionalLarge4) " 

cQueryIS &= "WHERE StaffEUPN = '" & cStaffEUPN & "' AND Class = '" & cClass & "'" 

然而此代码的工作:

cQueryIS = "UPDATE Additional SET [email protected], [email protected], 
[email protected], [email protected], [email protected], 
[email protected], [email protected], 
[email protected], [email protected], 
[email protected] " 

cQueryIS &= "WHERE StaffEUPN = '" & cStaffEUPN & "' AND Class = '" 
& cClass & "'" 

我有点困惑,因为我做的方式它首先在INSERT命令上正常工作,仅在UPDATE上导致错误。

以下是其余代码:

 Using dbConnectionSQL As New SqlConnection(dbConnectionString) 
      Using comm As New SqlCommand() 
       With comm 
        .Connection = dbConnectionSQL 
        .CommandType = CommandType.Text 
        .CommandText = cQueryIS 
        .Parameters.AddWithValue("@cSTEupn", cStaffEUPN) 
        .Parameters.AddWithValue("@cClass", cClass) 
        .Parameters.AddWithValue("@cAdditional1", ProvisionAdditional(1)) 
        .Parameters.AddWithValue("@cAdditional2", ProvisionAdditional(2)) 
        .Parameters.AddWithValue("@cAdditional3", ProvisionAdditional(3)) 
        .Parameters.AddWithValue("@cAdditional4", ProvisionAdditional(4)) 
        .Parameters.AddWithValue("@cAdditionalLarge1", ProvisionAdditional(5)) 
        .Parameters.AddWithValue("@cAdditionalLarge2", ProvisionAdditional(6)) 
        .Parameters.AddWithValue("@cAdditionalLarge3", ProvisionAdditional(7)) 
        .Parameters.AddWithValue("@cAdditionalLarge4", ProvisionAdditional(8)) 
       End With 
       Try 
        dbConnectionSQL.Open() 
        comm.ExecuteNonQuery() 
       Catch ex As SqlException 
        WriteToLogFile("Update Additional", ex.Message.ToString()) 
        MsgBox("Update Additional - " & ex.Message.ToString()) 
        Exit Sub 
       End Try 
      End Using 
     End Using 
+4

因为你混合了'insert'和'update'语法。 –

+0

您的意思是VALUES方式只能用于INSERT命令吗? –

+0

更新命令必须使用'SET = ,...',而插入可以使用VALUES语法 – Charleh

回答

4

因为在第一个示例中,您在UPDATE命令中使用INSERT语法。在第二个示例中,您正在使用正确的UPDATE语法。

INSERTUPDATE的语法不同。你应该阅读文档,但一般:

INSERT INTO <Table> (Field1, ..., FieldN) VALUES (Value1, ..., ValueN) 
vs. 
UPDATE <Table> SET Field1 = Value1, ..., FieldN = ValueN WHERE <Condition> 

有更多的方式可以使用它,但基本上就是这样。

+0

非常感谢,我是VB.NET新手,这是我使用SQL Server的第一个程序。来自VB6和Access! –

+0

这不是一个VB.NET问题,但是,这是对SQL的误解。另外:竖起大拇指从一开始就使用参数化查询! –

+0

感谢您的投票指导:-)我必须说我正在使用vb.net,但缺乏控制阵列使生活变得比应该更难! –