DataTable如何更新没有关键字的表,例如EXCEL中的表?
加载一个EXCEL的工作表到数据网格如下。表加载是动态的
dataAdapter = new OleDbDataAdapter(@ "SELECT * FROM [ " + tableName + "] ", connection);
OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(dataAdapter);
dataTable = new DataTable();
dataAdapter.Fill(dataTable);
dataGrid.DataSource = null;
dataGrid.DataSource = dataTable;
但是dataTable修改后,如何更改到EXCEL
------解决方案--------------------那就不能使用OleDbDataAdapter的update方法了。
只能自己写SQL语句,然后使用OleDbCommand来执行你的SQL语句来更新!!!
------解决方案--------------------没有主键,SqlDataAdapter不能构造Update的sql语句,只能自己组sql语句,再用SqlCommand去执行。
------解决方案--------------------动手写 UPDATE 语句
------解决方案--------------------虽然没有主键,但是 Excel 中也要有一列 或者 几列能够标识每行数据是唯一的
UPDATE [Sheett1$] SET 列名1=?, 列名2=? WHERE 列名3=?
------解决方案--------------------可以
看看duwamish
指定DataAdpater 的 updatecommand 例如
dataAdapter = new OleDbDataAdapter();
dataAdpater.UpDateCommand = new OleDataCommand( "update table set [id]=@id , .... " , conn );//access 没怎么用过,不太清楚sql语句中变量怎么写
dataAdpater.UpDateCommand.Paramers.Add( "@id " , ... , id //这里指映射到表的字段名);
dataTable = new DataTable();
DataRow dr = dataTable.NewRow();
dataTable.Rows.Add(dr);
dr.AcceptChange();//先接受改变
dr[ "id] = 1; //再修改
dataAdpater.UpDate(dataTable );