Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SQLServer2005中将文件插入图像数据类型_C#_Sql Server 2005 - Fatal编程技术网

C# 如何在SQLServer2005中将文件插入图像数据类型

C# 如何在SQLServer2005中将文件插入图像数据类型,c#,sql-server-2005,C#,Sql Server 2005,我正在尝试使用内联查询将文件保存为图像数据类型 INSERT INTO tblPDFInfo(FileImage, PdfFileName, FeedDateTime, HasProcessed) VALUES(@fileBytes, @fileName, getutcdate(), 0) 然后,如果我使用string.format,那么它将字节数组呈现为string,因此它不会带来好运 另一种方法是,如果我创建一个sqlcommand并 objCmd = new SqlCommand(

我正在尝试使用内联查询将文件保存为图像数据类型

INSERT INTO tblPDFInfo(FileImage, PdfFileName, FeedDateTime, HasProcessed)
VALUES(@fileBytes, @fileName, getutcdate(), 0)
然后,如果我使用string.format,那么它将字节数组呈现为string,因此它不会带来好运

另一种方法是,如果我创建一个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:必须声明标量变量 @文件字节

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

System.Data.SqlClient.SqlException:变量名“@fileBytes” 已经申报了。变量名在一个变量中必须是唯一的 查询批处理或存储过程

我怎样才能纠正这一点,使其发挥作用。我没有绑定到特定的数据类型,但我需要保存文件,然后再检索它,我认为图像数据类型是一个不错的选择,但无法实现。任何建议都会很有帮助。

试试这个

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();

谢谢你的回复。对于ExecuteOnQuery,我得到-1作为返回值,而对于ExecuteCalar,我得到0作为返回值。