用于将BLOB存储到sql server的正确ADO参数类型是什么 [英] What are the correct ADO parameter types for storing a BLOB to sql server

查看:95
本文介绍了用于将BLOB存储到sql server的正确ADO参数类型是什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试使用存储过程将文件存储到SQL Server数据库时,我正在尝试使用正确的参数定义。 sproc需要保存记录并将key / id返回给调用者。 Sproc参数如下所示:



  procedure  sp_insert_attachment  @ attachment_id   char  25  OUTPUT  @ digital_image   varbinary (max), @ comments   varchar (max),
@ file_name varchar (max), @ file_size numeric 18 2 ), @ parent_table varchar 50 ), @ parent_id < span class =code-keyword> char ( 25 ), @ import_date datetime
@ add_user char 25 ), @ add_datetime datetime

as

SET @ attachment_id = CONVERT CHAR 25 ),子串(替换(Newid() ,' - '' '), 1 25 ))

INSERT INTO [i_attachment]
([attachm ent_id]
,[digital_image]
,[评论]
,[file_name]
,[file_size]
,[parent_table]
,[parent_id]
,[import_date]
,[add_user]
,[add_datetime]
,[status])
VALUES
@ attachment_id
@ digital_image
< span class =code-sdkkeyword> @ comments ,
@ file_name
@file_size
@ parent_table
@ parent_id
@ import_date
@ add_user
@ add_datetime
' A'





我经历了几种参数类型的排列。目前,这就是我所拥有的:



  set  g_rst =服务器.CreateObject(  ADODB.Command
g_rst.CommandText = sp_insert_attachment
g_rst.ActiveConnection = Mconn
g_rst.NamedParameters = true
g_rst.CommandType = adCmdStoredProc
g_rst.Parameters.Append(g_rst.CreateParameter( @ attachment_id,SqlDbType。 Char ,adParamOutput))
g_rst.Parameters.Append(g_rst.CreateParameter(< span class =code-string> @ digital_image,SqlDbType.VarBinary,adParamInput,objUpload.Form( FILE1)。SaveAsBlob))
g_rst.Parameters.Append(g_rst.CreateParame) ter( @ comments,SqlDbType.VarChar,adParamInput,-1,g_strNarrative))
g_rst.Parameters.Append(g_rst.CreateParameter( @ file_name,SqlDbType.VarChar,adParamInput, -1,g_strFileName))
g_rst.Parameters.Append(g_rst.CreateParameter( @ file_size,SqlDbType。 Decimal ,adParamInput,g_dblFileSize))
g_rst.Parameters.Append(g_rst.CreateParameter( @ parent_table,SqlDbType.VarChar,adParamInput, 50 event))
g_rst.Parameters.Append(g_rst.CreateParameter( @ parent_id,SqlDbType。 Char ,adP aramInput, 25 ,g_strEventID))
g_rst.Parameters.Append(g_rst.CreateParameter( @ import_date,SqlDbType.DateTime2,adParamInput,DateTime.Parse(now())))
g_rst.Parameters.Append(g_rst.CreateParameter( @ add_user,SqlDbType。 Char ,adParamInput , 25 ,session( sec_user_id )))
g_rst.Parameters.Append(g_rst.CreateParameter( @ add_datetime, SqlDbType.DateTime2,adParamInput,DateTime.Parse(now())))

g_rst.Execute

' g_strAttachmentID = g_rst.Parameters(@ attachment_id)。值

g_rst.Close





这是投掷发生-2147217900错误。非常感谢任何帮助。

解决方案

我将数据库数据类型映射到.net时使用此引用 http://msdn.microsoft.com/en-us/library/4e5xt97a(v = vs.110)的.aspx [<一个href =http://msdn.microsoft.com/en-us/library/4e5xt97a(v=vs.110).aspx\"target =_ blanktitle =New Window> ^ ]

I'm wrestling with the correct parameter definition to use when attempting to store a file to a SQL server db using a stored procedure. The sproc needs to save the record and return the key/id to the caller. Sproc parameters look like this:

procedure sp_insert_attachment @attachment_id char(25) OUTPUT, @digital_image varbinary(max), @comments varchar(max),
           @file_name varchar(max), @file_size numeric(18,2), @parent_table varchar(50), @parent_id char(25), @import_date  datetime,
           @add_user  char(25), @add_datetime datetime

as

SET @attachment_id = CONVERT(CHAR(25), Substring(Replace(Newid(), '-', ''), 1, 25))

INSERT INTO [i_attachment]
           ([attachment_id]
           ,[digital_image]
           ,[comments]
           ,[file_name]
           ,[file_size]
           ,[parent_table]
           ,[parent_id]
           ,[import_date]
           ,[add_user]
           ,[add_datetime]
           ,[status])
     VALUES
           (@attachment_id,
           @digital_image,
		   @comments,
           @file_name,
		   @file_size,
		   @parent_table,
		   @parent_id,
		   @import_date,
           @add_user,
		   @add_datetime,
		   'A')



I've gone through several permutations of parameter types. Currently, this is what I have:

set g_rst = Server.CreateObject("ADODB.Command")
g_rst.CommandText = "sp_insert_attachment"
g_rst.ActiveConnection = Mconn
g_rst.NamedParameters = true
g_rst.CommandType = adCmdStoredProc
g_rst.Parameters.Append(g_rst.CreateParameter("@attachment_id", SqlDbType.Char, adParamOutput))
g_rst.Parameters.Append(g_rst.CreateParameter("@digital_image", SqlDbType.VarBinary, adParamInput, objUpload.Form("FILE1").SaveAsBlob ))
g_rst.Parameters.Append(g_rst.CreateParameter("@comments", SqlDbType.VarChar, adParamInput, -1,  g_strNarrative))
g_rst.Parameters.Append(g_rst.CreateParameter("@file_name", SqlDbType.VarChar, adParamInput, -1,  g_strFileName))
g_rst.Parameters.Append(g_rst.CreateParameter("@file_size", SqlDbType.Decimal, adParamInput, g_dblFileSize))
g_rst.Parameters.Append(g_rst.CreateParameter("@parent_table", SqlDbType.VarChar, adParamInput, 50, "event"))
g_rst.Parameters.Append(g_rst.CreateParameter("@parent_id", SqlDbType.Char, adParamInput, 25, g_strEventID))
g_rst.Parameters.Append(g_rst.CreateParameter("@import_date", SqlDbType.DateTime2, adParamInput, DateTime.Parse(now())))
g_rst.Parameters.Append(g_rst.CreateParameter("@add_user", SqlDbType.Char, adParamInput, 25, session("sec_user_id")))
g_rst.Parameters.Append(g_rst.CreateParameter("@add_datetime", SqlDbType.DateTime2, adParamInput, DateTime.Parse(now())))

g_rst.Execute

'g_strAttachmentID = g_rst.Parameters("@attachment_id").Value

g_rst.Close



This is throwing a -2147217900 error. Any help is greatly appreciated.

解决方案

I use this reference when mapping database datatypes to .net http://msdn.microsoft.com/en-us/library/4e5xt97a(v=vs.110).aspx[^]


这篇关于用于将BLOB存储到sql server的正确ADO参数类型是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆