2013-07-29 45 views
2

我想在c#中創建一個準備好的語句。C#相當於java準備語句

出於某種原因,我嘗試的一切都以exeption結束。

這是我的代碼現在:

using (OracleCommand cmd = new OracleCommand()) 
{ 
    cmd.Connection = conn; 
    cmd.CommandType = CommandType.Text; 

    cmd.CommandText = "insert into daily_cdr_logs " + 
      "(message) " + 
      "values " + 
      "(:message)"; 

    cmd.Parameters.Add(:message, msg); 
    //OracleDbType.Int32, postpaid_duration, ParameterDirection.Input); 
    cmd.Prepare(); 
    cmd.ExecuteNonQuery(); 
} 

我得到exeption:「操作是無效的,由於對象的當前狀態。」

+1

沒有分享例外的細節,我們不能幫助太多。 – Oded

+0

「an exeption」 - 什麼人?你能給出這些例外的類型和消息嗎? –

+1

顯示了什麼異常?也許也許是個愚蠢的問題,但是你在使用它之前是否打開了你的連接(conn.Open())? – BudBrot

回答

1

典型的Oracle準備語句如下所示。

(注意,只有在事先準備好的聲明的定義有:冒號和一個在cmd.Parameters.AddWithValue打不)

String msg = "something here"; 

using (OracleConnection con = new OracleConnection(...insert connection params here...)) 
{ 
    con.Open(); 
    OracleCommand cmd = con.CreateCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = @" 
     insert into daily_cdr_logs 
     (message) 
     values 
     (:message)"; 
    cmd.Parameters.AddWithValue("message", msg); 
    cmd.ExecuteNonQuery(); 
} 
+0

我已經有一個開放的連接,它不能找到AddWithValue – susparsy

0

我建議做這樣的:

//create a connection 
string conString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString; 
OracleConnection con = new OracleConnection(conString); 

//create SQL and insert parameters 
OracleCommand cmd = new OracleCommand("insert into daily_cdr_logs (message) values (:_message)", con); 
cmd.Parameters.Add(new OracleParameter("_message", msg)); 

    try 
    { 
     //if connection is closed, open it 
     if (con.State == ConnectionState.Closed) 
      con.Open(); 

      //execute query 
      cmd.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 
     //do something with the error 
    } 
    finally 
    { 
     //if connection is open, close it 
     if (con.State == ConnectionState.Open) 
     con.Close(); 
    } 

我在我的web.config文件中創建了我的連接字符串,演示了here