2017-03-21 15 views
-1

私が何をしても、次のコードは機能していないようです。それは常にExecuteNonQuery()で壊れます。Oracleデータベースにデータを挿入するために私のASP.NETコードを確認してください

私はmissiongですか?

は常に

のSystem.InvalidOperationExceptionがスローされます:「操作が原因オブジェクトの現在の状態に有効ではありません。」

protected void Submit_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) 
    { 
     OracleConnection conn = new OracleConnection(connectionString); 
     int room_id = Int32.Parse(DropDownList2.SelectedValue); 
     int activity_id = Int32.Parse(DropDownList1.SelectedValue); 
     string session_code = TextBox1.Text; 
     int start_time = GetTimeSeconds(startTime.Text); 
     int period = GetTimeSeconds(duration.Text); 
     string book_date = bookDate.Text; 
     string ref_no = DropDownList3.SelectedValue; 

     conn.Open(); 

     using (OracleCommand cmd = new OracleCommand(
      "insert into BRAZESH.ALL_SESSION(SESSION_CODE,START_TIME,\"PERIOD\",BOOKED_DATE,ROOM_ID,ACTIVITY_ID,REF_NO)" + 
      " values ('" + session_code + "'," + start_time + "," + period + ",to_date('" + book_date + "', 'yyyy-mm-dd')," + room_id + "," + activity_id + ", '" + ref_no + "')")) 
     { 
      try 
      { 
       cmd.ExecuteNonQuery(); 
      }catch (OracleException ex) 
      { 
       throw ex; 
      } 
     } 

    } 
} 
+0

OracleConnectionの 'cmd'にOracleConnectionの「conn」を割り当てることは決してありません。 – Filburt

+1

パラメータ化されたクエリとバインド変数を使用する必要があります。使用しているコードにSQLインジェクションの恩恵があります。 – MT0

答えて

0

コマンドで使用する接続を定義しているときは、CONNを使用していません。次の行を使用します。使用法の詳細を読むhere

using (OracleCommand cmd = new OracleCommand(
     "insert into BRAZESH.ALL_SESSION(SESSION_CODE,START_TIME,\"PERIOD\",BOOKED_DATE,ROOM_ID,ACTIVITY_ID,REF_NO)" + 
     " values ('" + session_code + "'," + start_time + "," + period + ",to_date('" + book_date + "', 'yyyy-mm-dd')," + room_id + "," + activity_id + ", '" + ref_no + "')",conn)) 
関連する問題