【发布时间】:2013-12-26 06:57:14
【问题描述】:
我正在尝试向数据库中插入一条 sql 语句,因为其中一个变量包含一条 sql 语句。然而,该语句有参数,它在数据库中显示为 @parm 而不是实际值。有什么想法吗?
这是声明:
Dim cmd As New SqlCommand("insert into MyTableOne (ID, QueryText) values (3,'insert into MyTableTwo (Name,Image,ClientId,Taskcode,TaskYear,Notes,ImgDT,Flag) values (@name,@img,@clientid,@taskcode,@taskyear,@notes,@imgdt,@flag)')", con)
这就是我填写值的方式 cmd.Parameters.AddWithValue("@name",Name) 和 Name 是在方法中作为参数给出的值 (这一切都在一个 Web 服务方法中,然后从提供值的应用程序中调用)
新:
Dim cmd As New SqlCommand("insert into FTWebUploadQueue2_GVT (ID, QueryText) values (4,'insert into IMAGES_GVT (Name,Image,ClientId,Taskcode,TaskYear,Notes,ImgDT,Flag) values ('+ @name + ',' + @img + ',' + @clientid + ',' + @taskcode + ',' + @taskyear + ',' + @notes + ',' + @imgdt + ',' + @flag +')')", con)
<WebMethod()> _
Public Function SaveImageInBackoffice(ByVal imageData As Byte(), ByVal Name As String, ByVal ClientId As String, ByVal Taskcode As Integer, ByVal TaskYear As Integer, ByVal Notes As String, ByVal ImgDT As DateTime, ByVal Flag As Integer) As Boolean
Dim con As New SqlConnection("Server=****;uid=**;pwd=****;database=ImagesTrial")
If con.State = ConnectionState.Closed Then con.Open()
Dim cmd As New SqlCommand("insert into FTWebUploadQueue3_GVT (ID, QueryText) values (4,'insert into IMAGES_GVT (Name,Image,ClientId,Taskcode,TaskYear,Notes,ImgDT,Flag) values ('+ CAST(@name AS VARCHAR) + ',' + CAST(@img AS VARCHAR) + ',' + CAST(@clientid AS VARCHAR) + ',' + CAST(@taskcode AS VARCHAR) + ',' + CAST(@taskyear AS VARCHAR) + ',' + CAST(@notes AS VARCHAR) + ',' + CAST(@imgdt AS VARCHAR) + ',' + CAST(@flag AS VARCHAR) +')')", con)
cmd.Parameters.AddWithValue("@img", imageData)
cmd.Parameters.AddWithValue("@name", Name)
cmd.Parameters.AddWithValue("@clientid", ClientId)
cmd.Parameters.AddWithValue("@taskcode", Taskcode)
cmd.Parameters.AddWithValue("@taskyear", TaskYear)
cmd.Parameters.AddWithValue("@notes", Notes)
cmd.Parameters.AddWithValue("@imgdt", ImgDT)
cmd.Parameters.AddWithValue("@flag", Flag)
cmd.ExecuteNonQuery()
con.Close()
Return 0
End Function
【问题讨论】:
-
所有@___参数都在单引号内,所以它是一个字符串。
-
我尝试在所有@parms 周围加上单引号,我发现服务器无法处理请求。我其实不太明白你的意思
-
您提供的是文字字符串:'...@name,@img...' 不是参数,它们是文本。
-
知道如何将它们作为参数提供吗?
-
是的,您必须确保参数在单引号之外 - 这意味着您可能必须连接语句。一种方式:
'... values (' + @name + ',' + @img + [and so on...]'
标签: mysql sql vb.net insert sql-insert