0

私は c# .Net が初めてで、c# winform アプリケーションの開発に取り組んでいます。あなたの助けが必要です。

public partial class Form1 : Form 
{ 
    OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Burak YEŞİLYURT\Desktop\secret.accdb"); 
    OleDbCommand komutcu; 
    OleDbDataAdapter adpt; 
    DataSet ds; 
    public Form1() 
    { 
        InitializeComponent(); 
        baglanti.Open(); 
        OleDbCommand komutcu = new OleDbCommand("SELECT * FROM todo", baglanti); 
        OleDbDataAdapter adpt = new OleDbDataAdapter(komutcu); 
        DataSet ds = new DataSet(); 
        adpt.Fill(ds); 
        dataGridView1.DataSource = ds.Tables[0]; 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
        OleDbCommandBuilder komut = new OleDbCommandBuilder(adpt); 
        DataSet yeni = new DataSet(); 
        yeni = ds.GetChanges(DataRowState.Modified); //here i get the error
        adpt.Update(yeni.Tables[0]); 
    } 
} 

プログラムをデバッグすると、次のエラーが表示されますyeni = ds.GetChanges(DataRowState.Modified);

"オブジェクト参照がオブジェクト インスタンスに設定されていません。 "

私の目的:セルに入力DataGridViewしてユーザーが編集した後、セルの変更を保存します。これを解決できません。どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

2

コンストラクターを修正する

public Form1() 
    { 
        InitializeComponent(); 
        baglanti.Open(); 
        OleDbCommand komutcu = new OleDbCommand("SELECT * FROM todo", baglanti); 
        OleDbDataAdapter adpt = new OleDbDataAdapter(komutcu); 
        this.ds = new DataSet();  //there was an error in this line
        ..

    } 

コンストラクターでのローカル インスタンスを作成しましたDataSetが、クラス変数 への参照を保存するのを忘れていましたds。次に、button1_Click初期化されていないフィールドにアクセスしようとしましdsた (null値がありました)。

したがって、この行の代わりに

DataSet ds = new DataSet();

あなたは書くべきです

this.ds = new DataSet();
于 2012-08-15T19:53:27.210 に答える
0

データセットoledbcommandとoldbDataAdapterを2回定義したため、機能しませんでした

 public partial class Form1 : Form 
    { 
        OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Burak YEŞİLYURT\Desktop\secret.accdb"); 
        OleDbCommand komutcu; 
        OleDbDataAdapter adpt; 
        DataSet ds; 
        public Form1() 
        { 
            InitializeComponent(); 
            baglanti.Open(); 
            komutcu = new OleDbCommand("SELECT * FROM todo", baglanti); 
            adpt = new OleDbDataAdapter(komutcu); 
            ds = new DataSet(); 
            adpt.Fill(ds); 
            dataGridView1.DataSource = ds.Tables[0]; 

        } 

        private void button1_Click(object sender, EventArgs e) 
        { 
            OleDbCommandBuilder komut = new OleDbCommandBuilder(adpt); 
            DataSet yeni = new DataSet(); 
            yeni = ds.GetChanges(DataRowState.Modified); //here i get the error
            adpt.Update(yeni.Tables[0]); 
        } 
    } 
于 2012-08-15T19:55:08.133 に答える
0
OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data     Source=C:\Users\Burak YEŞİLYURT\Desktop\secret.accdb"); 
    OleDbCommand komutcu; 
    OleDbDataAdapter adpt; 
    DataSet ds = new DataSet(); 
    public Form1() 
    { 
        InitializeComponent(); 
        baglanti.Open(); 
        OleDbCommand komutcu = new OleDbCommand("SELECT * FROM todo", baglanti); 
        OleDbDataAdapter adpt = new OleDbDataAdapter(komutcu); 
        //DataSet ds = new DataSet(); 
        adpt.Fill(ds); 
        dataGridView1.DataSource = ds.Tables[0]; 

    } 
于 2012-08-15T20:00:52.427 に答える