2011-11-18 67 views
0

我试图使用内嵌查询将文件保存到图像数据类型。如何将文件插入到SQL Server 2005中的图像数据类型

INSERT INTO tblPDFInfo(FileImage, PdfFileName, FeedDateTime, HasProcessed) 
VALUES(@fileBytes, @fileName, getutcdate(), 0) 

,然后如果我用string.format则渲染字节数组字符串,所以它也是没有运气。

如果我创建一个SqlCommand和

objCmd = new SqlCommand(strSQL, objConn, objTrans); 
    objFileDataParam = new SqlParameter("@fileBytes", SqlDbType.Image); 
    objFileDataParam.Value = (byte[])fileData; 
    objCmd.Parameters.Add(objFileDataParam); 

    objFileNameParam = new SqlParameter("@fileName", SqlDbType.VarChar); 
    objFileNameParam.Value = PDFfileName; 
    objCmd.Parameters.Add(objFileNameParam); 
    objCmd.CommandText = strSQL; 

然后发射跟它

System.Data.SqlClient.SqlException查询时的另一种方式:必须声明标量变量 “@fileBytes “

如果在内联查询中我声明了相同的变量,那么它也给我错误说

System.Data.SqlClient.SqlException:变量名'@fileBytes' 已被声明。在 查询批处理或存储过程中,变量名称必须是唯一的。

我怎样才能纠正这个问题,使其工作。那么我没有绑定到一个特定的数据类型,但我需要保存该文件,以后再检索它,我认为图像数据类型将是一个不错的选择,但不能实现它。任何建议都会非常有帮助。

回答

0

试试这个,

string strSql="INSERT INTO tblPDFInfo (FileImage,PdfFileName,FeedDateTime,HasProcessed) 
       values(@fileBytes,@fileName,@getutcdate,@hasprocessed)"; 

byte []bytes=(byte[])fileData; 
objCmd = new SqlCommand(strSQL, objConn, objTrans); 
objCmd.Parameters.Add("@fileBytes", SqlDbType.Image,bytes.Length).Value=bytes; 
objCmd.Parameters.Add("@fileName", SqlDbType.VarChar,100).Value=PDFfileName; 
objCmd.Parameters.Add("@getutcdate", SqlDbType.DateTime).Value=DateTime.Now; 
objCmd.Parameters.Add("@hasprocessed", SqlDbType.Bit).Value=0; 

objCmd.ExecuteNonQuery(); 
+0

感谢您的答复。我得到-1作为'ExecuteNonQuery'的返回值,而在ExecuteScalar的情况下我得到0作为返回值。 – Vinay

相关问题