最近遇上一个很让我蛋疼的问题,小弟刚刚学,,别见怪,高手指点啊,谢谢!
我现在先从数据库里面把信息取出来(这里我用的是access)
OleDbConnection conn;
OleDbCommand cmd;
DataTable dt = new DataTable();
OleDbDataAdapter ad;string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=F:\C#SQL\Visual Studio 2005\Projects\控件测试\控件测试\Resources\Test.mdb;Persist Security Info=True";
conn = new OleDbConnection(strConnection);
cmd = new OleDbCommand("select * from tt", conn);
ad = new OleDbDataAdapter(cmd);
ad.Fill(dt);
dataGridView1.DataSource = dt;比如说我现在用
int n = dataGridView1.CurrentCell.RowIndex;
dataGridView1.Rows.RemoveAt(n);
OleDbCommandBuilder cb = new OleDbCommandBuilder(ad);
ad.Update(dt);这样我是可以同步更新数据库;
但是如果我直接用语句操作上面的dt,
dt.Rows.RemoveAt(0);
当这样的时候再用update(dt)更新的却不能更新数据库,,要怎样才能做到直接操作并能同步数据库呢?还有最好能给我解释解释DataAdapter的update方法的原理!!
再次感谢路过并回答的热心人,,嘿嘿
我现在先从数据库里面把信息取出来(这里我用的是access)
OleDbConnection conn;
OleDbCommand cmd;
DataTable dt = new DataTable();
OleDbDataAdapter ad;string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=F:\C#SQL\Visual Studio 2005\Projects\控件测试\控件测试\Resources\Test.mdb;Persist Security Info=True";
conn = new OleDbConnection(strConnection);
cmd = new OleDbCommand("select * from tt", conn);
ad = new OleDbDataAdapter(cmd);
ad.Fill(dt);
dataGridView1.DataSource = dt;比如说我现在用
int n = dataGridView1.CurrentCell.RowIndex;
dataGridView1.Rows.RemoveAt(n);
OleDbCommandBuilder cb = new OleDbCommandBuilder(ad);
ad.Update(dt);这样我是可以同步更新数据库;
但是如果我直接用语句操作上面的dt,
dt.Rows.RemoveAt(0);
当这样的时候再用update(dt)更新的却不能更新数据库,,要怎样才能做到直接操作并能同步数据库呢?还有最好能给我解释解释DataAdapter的update方法的原理!!
再次感谢路过并回答的热心人,,嘿嘿
// DataTable dt = ds.Tables[0]; //新数据行对象的名字为dr
// DataRow dr = dt.NewRow();
//对新数据行中的字段进行赋值
//dr["ProdType"] = txtProdType.Text;
// dr["TypeLevel"] = txtTypeLevel.Text; //将新数据行添加到数据表中
//ds.Tables[0].Rows.Add(dr);
//创建commandbuilder对象,自动匹配da的其他命令属性
//OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//将数据集中的数据更新到数据库中
//da.Update(ds);
这是我做的你看哈,看对你有什么帮助