2014-09-11 151 views
0

我正在寫一種方法在C#中將數據插入到oracle中。當執行這個我得到 錯誤Invalid parameter binding Parameter name: file 我的代碼是:無效的參數綁定參數名稱:文件

public static void DatabaseFilePut(MemoryStream fileToPut, OracleConnection con) 
    { 
     try 
     { 
      const string preparedCommand = 
       @"INSERT INTO user_account_statement (statement_id,session_key, 
        login_id,user_id,account_number,from_date,todate,ipaddress, 
        create_date_time,STATEMENT_FILE)VALUES(1073, 
       'fe79e0345986b5a439c26f731234868b53f877366f529', 
        2335,'204254','108142',to_date('2014-08-23 16:45:06','yyyy-mm-dd hh24:mi:ss'), 
        to_date('2014-08-23 16:45:06','yyyy-mm-dd hh24:mi:ss'),'106.79.126.249', 
        to_date('2014-08-23 16:45:06','yyyy-mm-dd hh24:mi:ss'), :file)"; 

      using (var sqlWrite = new OracleCommand(preparedCommand, con)) 
      { 
       sqlWrite.BindByName = true; 
       var blobparameter=new OracleParameter 
       { 
        OracleDbType = OracleDbType.Blob, 
        ParameterName = "file", 
        Value = fileToPut 
       }; 
       sqlWrite.Parameters.Add(blobparameter); 
       sqlWrite.ExecuteNonQuery(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

我已經檢查了參數部分,但沒有得到什麼是錯在這。

回答

1

該參數需要一個字節數組。我不知道它也接受內存流。所以

Value = fileToPut 

應該

Value = fileToPut.ToArray() 
+0

現在我得到錯誤「ORA-01745:無效的主機/綁定變量名」 – 2014-09-11 11:00:01

+0

你或許應該從對方的回答中添加提示和使用參數的@符號。你正在使用'ODP.NET',不是嗎? – nvoigt 2014-09-11 11:01:20

+0

@Ashok_Karale:「文件」可能是一個保留字。嘗試更改參數名稱。通過http://ora-01745.ora-code.com/ – 2014-09-11 11:02:05