2011-11-18 65 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

相關問題