所以我创建了这个数据集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);
}
}
答案 0 :(得分:0)
ADO不够智能,无法自行更新,您需要设置自己的更新语句并使用要更新的值填充它。
da.UpdateCommand = ....
这是一个简单用法的链接......
http://www.java2s.com/Code/CSharp/Database-ADO.net/UpdatetableusingSqlDataAdapter.htm
答案 1 :(得分:0)
在您缺少的updatedb()方法中.AcceptChanges();
public void updatedb() {
MySqlCommandBuilder cmb = new MySqlCommandBuilder(da);
da.Update(ds);
da.AcceptChanges();
}
有关详细信息,请参阅Here