【发布时间】:2021-08-03 08:03:06
【问题描述】:
我正在尝试更新数据库中表中的一行,其数据类型为:date。
我正在使用存储过程,并且正在从 TextBox 中检索要更新的值作为字符串。我的问题是一个字符串有双引号(“),当我在字符串中传递我的值时,它会保留双引号,而 SQL-Server 只支持单引号('')。
intIndividualSessionID = Me.IndividualSession_ListBox.Column(1)
sessionDate = Me.DateTextBox.Value
startTime = Me.StartTimeTextBox.Value
endTime = Me.EndTimeTextBox.Value
'Setup ADO objects to run stored procedure
Set cn = New ADODB.Connection
cn.Open strCon
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
'Create string to include parameters
CommandText = "Exec UpdateIndividualSession " & intClientID & "," & intIndividualSessionID & "," & "sessionDate" & "," & "startTime" & "," & "endTime" & ";"
.CommandTimeout = 0
.Execute
End With
这在我运行时给了我一个错误。
将数据类型 nvarchar 转换为日期时出错。”
【问题讨论】:
-
MySQL 还是 SQL Server?如果您使用参数,您可以解决所有这些问题,并使您的代码更安全。
-
mysql 没有 exec 语句,它使用 call 语句来执行存储过程,并且 mysql 可以将 nvarchar 理解为别名,但永远不会在错误消息中引用 nvarchar。这意味着您使用的是 ms sql server,而不是 mysql。您应该使用参数,而不是字符串连接将参数传递给 sql 语句。
-
@Shadow 哦,我的意思是 SQL-Server,我的错误,但我明白了,这不是一个实时数据库,只是我为学校项目工作的东西,我认为我采取了简单的路线,但它给我带来的问题多于帮助。
标签: sql-server excel vba