Dataset 多表更新 自动生成变更代码
来源:互联网 发布:淘宝上的指纹锁靠谱吗 编辑:程序博客网 时间:2024/06/05 14:41
PS:为了实现通用架构方案,可支持datagridview类的数据直接修改后自动保存.
/// 多表DataSet保存 /// </summary> /// <param name="das">DataSet</param> /// <param name="tableName">表名</param> /// <param name="ID">索引字段</param> /// <param name="Fields">要变更的数据字段集合,以,分隔</param> /// <returns></returns> public bool SaveData(DataSet das,string tableName, string ID, string Fields) { using (SqlConnection sqlCon = new SqlConnection(conStr)) { try { DataSet dsChange = das.GetChanges(); string sql = ""; if (dsChange == null) { return false; } else { string[] sFields=Fields.Split(','); foreach (DataRow dr in dsChange.Tables[0].Rows) { if (dr.RowState == DataRowState.Deleted) { //删除时需取初始值 //string id = dtDeleted.Rows[0]["id", DataRowVersion.Original].ToString(); //删除方法 sql += "Delete from " + tableName + " where " + ID + "=" + dr[ID, DataRowVersion.Original].ToString() + " \r\n"; } else if (dr.RowState == DataRowState.Modified) { //更新方法 string usql=""; string uvalue = ""; for (int i = 0; i < sFields.Length; i++) { if (dr.Table.Columns[sFields[i]].DataType == typeof(string) || dr.Table.Columns[sFields[i]].DataType == typeof(DateTime)) uvalue = "'" + dr[sFields[i]].ToString() + "'"; else if (dr.Table.Columns[sFields[i]].DataType == typeof(bool)) uvalue = (Convert.ToBoolean(dr[sFields[i]])?"1":"0"); else uvalue = dr[sFields[i]].ToString(); if (!string.IsNullOrWhiteSpace(usql)) usql += ","; usql += sFields[i] + "=" + uvalue; } sql += "update " + tableName + " set "+usql+" where " + ID + "=" + dr[ID].ToString() + " \r\n"; } else if (dr.RowState == DataRowState.Added) { //新增方法 string ufield = ""; string uvalue = ""; for (int i = 0; i < sFields.Length; i++) { if (!string.IsNullOrWhiteSpace(uvalue)) uvalue += ","; if (dr.Table.Columns[sFields[i]].DataType == typeof(string) || dr.Table.Columns[sFields[i]].DataType == typeof(DateTime)) uvalue += "'" + dr[sFields[i]].ToString() + "'"; else if (dr.Table.Columns[sFields[i]].DataType == typeof(bool)) uvalue = (Convert.ToBoolean(dr[sFields[i]])?"1":"0"); else uvalue += dr[sFields[i]].ToString(); if (!string.IsNullOrWhiteSpace(ufield)) ufield += ","; ufield += sFields[i]; } sql += "insert into " + tableName + " (" + ufield + ") values (" + uvalue + ") \r\n"; } } MessageBox.Show(sql); } return true; } catch(Exception ex) { MessageBox.Show(ex.Message); return false; } } }//初始数据源:private void Form1_Load(object sender, EventArgs e) { //加载dataset string dataSQL="select A.ID,b.id,b.Code,A.ComputerName,A.[Description],A.IPAddress,A.Modal,A.Oper,A.DoTime,DoUser from Sys_Log A left join Sys_Modal B on a.Modal=b.Name"; dataSet = GetDs(dataSQL); gridControl1.DataSource = dataSet.Tables[0]; }//调用测试private void button8_Click(object sender, EventArgs e) { string Fields = "ComputerName,Description,IPAddress,Oper,DoTime,DoUser"; SaveData(dataSet, "Sys_Log", "ID", Fields); }
0 0
- Dataset 多表更新 自动生成变更代码
- DataSet 多表更新方式
- Tomcat自动加载发生变更的servlet代码
- hibernate自动生成表的代码
- 用java代码自动生成数据库表
- AOS 自动生成代码(一) 创建表
- 基于表的mybatis代码自动生成
- 将DataSet更新自动提交到数据库工具类实现
- 自动批量更新DataSet中的数据到数据库
- 代码自动生成.
- 自动生成代码
- 代码自动生成软件
- ALV自动生成代码
- CodeSmith自动生成代码
- java代码自动生成
- 代码自动生成工具
- 自动代码生成
- MBG自动代码生成
- 7天学会Maven(第一天——了解 Maven)
- 欢迎使用CSDN-markdown编辑器
- 设计模式之·适配器模式
- A. Lesha and array splitting Codeforces Round #390 (Div. 2)
- CheckBox监听事件
- Dataset 多表更新 自动生成变更代码
- 【好福利】分享100多个微信小程序源码
- html5的音频和视频
- hud oj 1813 Escape from Tetris
- activemq官方文档分析
- mysql添加索引
- 一念永恒 > 第532章 我委屈啊
- JavaMail使用qq邮箱(转)
- Android Studio 运行java程序