这是我在表单中的保存按钮中的代码。我使用的是VB6.0和MSSQL Server 2005。
CommonDialog1 和 2 保存插入图片框中的图像的文件名。
Set rs = con.Execute("insert into table1
values('" & txtbox1.Text & "' , "_
& " '" & txtbox2.Text & "' , "_
& " '" & CommonDialog1.FileName & "' , "_
& " '" & CommonDialog2.FileName & "' , "_
& " '" & txtbox3.Text & "' )")
不允许从数据类型 varchar 隐式转换为 varbinary(max)。使用 CONVERT 函数运行此查询。- 运行时弹出错误。
由于SQL的"INSERT"函数不接受子查询,我尝试使用CAST转换CommonDialog1和2的文件名,并取得了成功。
设置 rs = con。执行("插入到表 1 中values('" & txtbox1.文本 &"' , "_
&" '" & txtbox2.文本 &"' , "_
&" cast('" & CommonDialog1.FileName & "' as varbinary(max)) , "_
&" cast('" & CommonDialog2.FileName & "' as varbinary(max)), "_
&" '" & txtbox3.文本 &"' )")
- 使用下面列出的参数为自己创建一个存储过程(可以不用,但我更喜欢这种方法)(我建议重命名它们)
- 将行 mCmd.CommandText 替换为存储过程名称
- 替换连接字符串
- 如果任何文本大小错误,请更正参数大小
Dim mConn As New ADODB.Connection Dim mCmd As New ADODB.Command Dim mStreamCD1 As New ADODB.Stream Dim mStreamCD2 As New ADODB.Stream mStreamCD1.Type = adTypeBinary mStreamCD1.Open mStreamCD1.LoadFromFile (CommonDialog1.FileName) mStreamCD2.Type = adTypeBinary mStreamCD2.Open mStreamCD2.LoadFromFile (CommonDialog2.FileName) mConn.Open "Insert your Connection String" Set mCmd.ActiveConnection = mConn mCmd.CommandType = adCmdText mCmd.CommandText = "InsertIntoTable1" mCmd.Parameters.Append mCmd.CreateParameter("@txtbox1Text", adVarChar, adParamInput, 250, txtbox1.Text) mCmd.Parameters.Append mCmd.CreateParameter("@txtbox2Text", adVarChar, adParamInput, 250, txtbox2.Text) mCmd.Parameters.Append mCmd.CreateParameter("@CD1", adVarBinary, adParamInput, mStreamCD1.Size, mStreamCD1.Read) mCmd.Parameters.Append mCmd.CreateParameter("@CD2", adVarBinary, adParamInput, mStreamCD2.Size, mStreamCD2.Read) mCmd.Parameters.Append mCmd.CreateParameter("@txtbox3Text", adVarChar, adParamInput, 250, txtbox3.Text) mCmd.Execute , , adExecuteNoRecords