【发布时间】:2016-07-21 20:20:06
【问题描述】:
我收到上面的错误,说如果不执行这些操作,我无法显式定义标识列,但是,我并没有尝试设置标识列的值。我只是试图使用用户输入执行一个基本的插入语句。我真的被困住了,需要克服这个问题。想法?
Public Sub ExecuteSQL(ByVal sql As String)
Using myConnection As New Data.SqlClient.SqlConnection(connString)
myConnection.Open()
Using cdmDatabaseCommand As New Data.SqlClient.SqlCommand(sql, myConnection)
cdmDatabaseCommand.ExecuteNonQuery()
End Using
End Using
End Sub
Dim insertSpray As String = ""
insertSpray = "INSERT INTO Spray VALUES ('" & sprayDate & "','" & timeStart & "','" & timeFinish & "','" & tankVolumeStart & "','" & tankVolumeFinish & "','" & comment & "','" & vehicleId & "','" & vehicleTime & "','" & siteType & "','" & area & "','" & applicatorOneId & "','" & applicatorTwoId & "','" & sprayLocationFeature & "','" & sprayStartLocationDescription & "','NULL','NULL','NULL','NULL','" & sprayEndLocationDescription & "');"
ExecuteSQL(insertSpray)
【问题讨论】:
-
好吧,您没有指定要插入这些值的列和顺序,因此
sprayDate可能会尝试挤入 Identity 列。您还应该使用 SQL 参数。一切都不是字符串/文本吗? -
不将
insert_list包含在insert语句中是非常糟糕的做法。表架构中的任何更改都会导致应用程序崩溃。 -
如果您的
comment变量包含撇号,此代码将如何工作? (提示:不会)。
标签: sql sql-server vb.net