2016-07-15 16 views
-1

私は多くの作業をしましたが、この問題は解決しませんでした。私はC#でアクセスデータベースを使ってプログラムを作っています。アクセス元のRCWから分離されたC#COMオブジェクトは使用できません

私は新しいフォームを追加しました。このフォームでデータベースを更新したいと思います。

私はこれを別の形式で取得しています。 gelenid = Form1.id2;

これは私のコードです。私はkomut.ExecuteNonQuery()にエラーを取得しています。

 isim = comboBox1.Text; 
     yapilacak_is = textBox1.Text.Trim(); 
     bolum = comboBox2.Text.Trim(); 
     tarih = monthCalendar1.SelectionRange.Start.ToShortDateString(); 
     durum = comboBox3.Text; 
     int idm = Convert.ToInt32(gelenid); 
     baglanti.Open(); 
     komut.Connection = baglanti; 
     komut.CommandText = @"UPDATE Bakim SET [Ad][email protected], 
         [Bolum][email protected], 
         [Yapilacak_Is][email protected],   
         [Tarih][email protected], 
         [Durum][email protected] 
         WHERE [Id][email protected]"; 

     komut.Parameters.AddWithValue("@isim", isim); 
     komut.Parameters.AddWithValue("@yapis", yapilacak_is); 
     komut.Parameters.AddWithValue("@bolum", bolum); 
     komut.Parameters.AddWithValue("@tarih", tarih); 
     komut.Parameters.AddWithValue("@durum", durum); 
     // Moved after the Cover parameter 
     komut.Parameters.AddWithValue("@Id", idm); 
     komut.ExecuteNonQuery(); 
     baglanti.Close(); 

     komut.Dispose(); 

私は

OleDbConnectionオブジェクトbaglanti =新しいOleDbConnectionオブジェクト( "プロバイダ= Microsoft.ACE.Oledb.12.0;データソース= BakimVeritabani.accdb")コマンドにkomut追加。 OleDbCommand komut =新しいOleDbCommand();

+0

「komut」の作成方法を示す必要があります。また、実際に 'using'ブロックを使用し、' .Dispose() 'と' .Close() 'を大して呼び出さないでください。 –

+0

OleDbConnection baglanti = new OleDbConnection( "Provider = Microsoft.ACE.Oledb.12.0; Data Source = BakimVeritabani.accdb"); OleDbCommand komut = new OleDbCommand(); Form1 frmAna =(Form1)System.Windows.Forms.Application.OpenForms ["Form1"]; –

+0

コメントにコードを入れてはいけません。質問にのみ記載し、適切にフォーマットする必要があります。両者がどう関係しているかを示す必要もあります。 baglantiは関数で作成されているか、再利用し続ける単一の接続を持っていますか? –

答えて

0

1つの接続があります。あなたの問題は、あなたの接続は可能性が開かれ、何度も閉鎖されて扱うことができない可能性が、あなたは、新しい接続を毎回作り、using文でそれを処分する必要がありますされ

using(OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=BakimVeritabani.accdb") 
using(OleDbCommand komut = new OleDbCommand()) 
{ 
    isim = comboBox1.Text; 
    yapilacak_is = textBox1.Text.Trim(); 
    bolum = comboBox2.Text.Trim(); 
    tarih = monthCalendar1.SelectionRange.Start.ToShortDateString(); 
    durum = comboBox3.Text; 
    int idm = Convert.ToInt32(gelenid); 
    baglanti.Open(); 
    komut.Connection = baglanti; 
    komut.CommandText = @"UPDATE Bakim SET [Ad][email protected], 
        [Bolum][email protected], 
        [Yapilacak_Is][email protected],   
        [Tarih][email protected], 
        [Durum][email protected] 
        WHERE [Id][email protected]"; 

    komut.Parameters.AddWithValue("@isim", isim); 
    komut.Parameters.AddWithValue("@yapis", yapilacak_is); 
    komut.Parameters.AddWithValue("@bolum", bolum); 
    komut.Parameters.AddWithValue("@tarih", tarih); 
    komut.Parameters.AddWithValue("@durum", durum); 
    // Moved after the Cover parameter 
    komut.Parameters.AddWithValue("@Id", idm); 
    komut.ExecuteNonQuery(); 
} 
関連する問題