已经完成了datatable读出access数据,在增加或删除了datatable表内数据后怎么同步到access内,请教完整代码,简单易懂的。
已经完成了datatable读出access数据,在增加或删除了datatable表内数据后怎么同步到access内?请教完整代码,简单易懂的。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
7条回答 默认 最新
- CSDN专家-showbo 2021-08-11 14:50关注
DataTable Row对象有RowState,根据RowState进行相关操作就行了,示例如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~
原始数据
执行后using System; using System.Data; using System.Data.OleDb; using System.Collections.Generic; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<string> delIds = new List<string>();//用于存储删除的记录id var conn = new OleDbConnection(@"provider=microsoft.ace.oledb.12.0;data source=D:\文件\C#\Console\ConsoleApp1\bin\Debug\data.accdb"); DataTable dt = new DataTable(); var da = new OleDbDataAdapter("select id,username,sex,age from data", conn);//age为数字型,其他字符串 da.Fill(dt); dt.Rows.Add(0, "username3", "sex3", 33);//新增一行,id列赋值为0 DataRow row = dt.Rows[0];//要删除的行 delIds.Add(row["id"].ToString());//注意remove前将id添加delIds列表 dt.Rows.Remove(row); dt.Rows[0]["username"] = "update username row2";//更改第一行数据(原第二行数据,上面remove后变第一行)的用户名 List<string> sqls = new List<string>();//用于存储生成的SQL,以便执行 string sql = ""; //遍历数据行生成添加和修改的记录的SQL foreach (DataRow dr in dt.Rows) { sql = ""; switch (dr.RowState) { case DataRowState.Added://新增 sql = "insert into data(username,sex,age)" + "values('" + dr["username"].ToString().Replace("'", "'") + "','" + dr["sex"].ToString().Replace("'", "'") + "'," + dr["age"] + ")"; break; case DataRowState.Modified://修改 sql = "update data set username='" + dr["username"].ToString().Replace("'", "'") + "',sex='" + dr["sex"].ToString().Replace("'", "'") + "',age= where id=" + dr["id"]; break; } if (sql != "") sqls.Add(sql); } //生成删除的sql语句 if (delIds.Count > 0) sqls.Add("delete from data where id in(" + string.Join(",", delIds) + ")"); if (sqls.Count > 0) { conn.Open(); //遍历sql语句执行 OleDbCommand cmd = new OleDbCommand() { Connection = conn }; foreach (string s in sqls) { cmd.CommandText = s; cmd.ExecuteNonQuery(); Console.WriteLine(s); } } conn.Close(); Console.ReadKey(); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算