0

所以我创建了这个数据集 ds 并通过 addrow("THIS","BLOWS",0) 其他地方向唯一的表添加一行。

datagridview 向我展示了添加一行确实有效,但它拒绝更新实际的 mySQL 数据库。就像 updatesdb() 方法甚至不存在一样。我的错误在哪里?

class Mitarbeiterdb{
    static MySqlConnection con = new MySqlConnection("***");
    MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM mitarbeiter.mitarbeiter;", con);

    DataSet ds = new DataSet();

    public void setDataSet(){
        da.TableMappings.Add("table0", "Mitarbeiter");
        da.Fill(ds);  
    }


    public void addrow(string a,string b,int i){
        con.Open();
        DataRow tmprow;
        tmprow = ds.Tables[i].NewRow();
        tmprow[1] = a;
        tmprow[2] = b;
        tmprow.EndEdit();
        ds.Tables[i].Rows.Add(tmprow);
        updatedb();
        con.Close();
    }

    public void updatedb() {
         MySqlCommandBuilder cmb = new MySqlCommandBuilder(da);
         da.Update(ds);
    }
}
4

2 回答 2

0

ADO 不够聪明,无法自行更新,您需要设置自己的更新语句并用要更新的值填充它。

da.UpdateCommand = ....

这是一个简单用法的链接...

http://www.java2s.com/Code/CSharp/Database-ADO.net/UpdatetableusingSqlDataAdapter.htm

于 2012-05-03T17:13:21.797 回答
0

在您的 updatedb() 方法中,您缺少 .AcceptChanges();

public void updatedb() {
     MySqlCommandBuilder cmb = new MySqlCommandBuilder(da);
     da.Update(ds);
     da.AcceptChanges();
}

欲了解更多信息,请阅读这里

于 2012-05-03T17:19:20.460 回答