System.Data.OleDb.OleDbConnection dbConnection=new System.Data.OleDb.OleDbConnection(sonstr); string QueryStr="select * from bsq_entry_head where Entry_no='"+TextBox1.Text+"'"; System.Data.OleDb.OleDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
dbCommand.CommandText=QueryStr;
dbCommand.Connection = dbConnection; System.Data.OleDb.OleDbDataAdapter dataAdapter= new System.Data.OleDb.OleDbDataAdapter();
dataAdapter.SelectCommand = dbCommand;
System.Data.OleDb.OleDbCommandBuilder commandBuilder=new System.Data.OleDb.OleDbCommandBuilder(dataAdapter);
dataAdapter.UpdateCommand=commandBuilder.GetUpdateCommand();
dataAdapter.InsertCommand=commandBuilder.GetInsertCommand();
dataAdapter.DeleteCommand=commandBuilder.GetDeleteCommand();
//。。中间修改表格部分省略,表格没有改错应该,就是下面这句入库的语句感觉就像没执行,也不报错。怎么回事????
dataAdapter.Update(dataset_head.Tables[0]);
dbCommand.CommandText=QueryStr;
dbCommand.Connection = dbConnection; System.Data.OleDb.OleDbDataAdapter dataAdapter= new System.Data.OleDb.OleDbDataAdapter();
dataAdapter.SelectCommand = dbCommand;
System.Data.OleDb.OleDbCommandBuilder commandBuilder=new System.Data.OleDb.OleDbCommandBuilder(dataAdapter);
dataAdapter.UpdateCommand=commandBuilder.GetUpdateCommand();
dataAdapter.InsertCommand=commandBuilder.GetInsertCommand();
dataAdapter.DeleteCommand=commandBuilder.GetDeleteCommand();
//。。中间修改表格部分省略,表格没有改错应该,就是下面这句入库的语句感觉就像没执行,也不报错。怎么回事????
dataAdapter.Update(dataset_head.Tables[0]);
http://chs.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid4.src
dataAdapter.Update(dataset_head.Tables[0]);改成上述代码试试看
其次,
dataAdapter.UpdateCommand=commandBuilder.GetUpdateCommand();
dataAdapter.InsertCommand=commandBuilder.GetInsertCommand();
dataAdapter.DeleteCommand=commandBuilder.GetDeleteCommand();
这3句不需要
dataAdapter.InsertCommand=commandBuilder.GetInsertCommand();
dataAdapter.DeleteCommand=commandBuilder.GetDeleteCommand();
去掉试了没有
dataAdapter.UpdateCommand=commandBuilder.GetUpdateCommand();
dataAdapter.InsertCommand=commandBuilder.GetInsertCommand();
dataAdapter.DeleteCommand=commandBuilder.GetDeleteCommand();
我放了一个DataGrid测试,写了一个DataGrid2.DataSource=dataset_head;DataGrid2.DataBind();都能看见我家的数据,但就是不会更新到数据库里,怎么回事啊
或者,如果你使用ASP.NET的话,是不是PostBack后,又重新填充了数据?
有了
dataAdapter.SelectCommand = dbCommand;
下面的语句没有必要了,,会自动生成。。
dataAdapter.UpdateCommand=commandBuilder.GetUpdateCommand();
dataAdapter.InsertCommand=commandBuilder.GetInsertCommand();
dataAdapter.DeleteCommand=commandBuilder.GetDeleteCommand();
在插入或更新,删除前,,最好判断数据行的状态,,过滤出发生以上变化行,,再用update语句,,if(ds.HasChanges(DataRowState.Added))
{
DataSet xds;
xds=dataset_head.GetChanges(DataRowState.Added);//数据行状态,,
dataAdapter.Update(dataset_head.Tables[0]);
}
记住在更新数据库时,必须指明更新表的主键,,可以在SqlDataAdapter后面指定,fill时把表结构,及主键值也拷贝进datatable中,这样更新数据库时
才能成功。。