首先判断是否存在指定记录,存在则执行更新语句,不存在则执行插入语句。主要用到三个函数:

 public class PubVariant{public static string strUpdateSql = "update CorrespondFields set CadField = @CadField,FieldType = @FieldType,CADTYPE = @CADTYPE"+ " where SdeLayerName = @SdeLayerName and CadLayerName = @CadLayerName and SdeField = @SdeField";public static string strInsertSql = "insert into CorrespondFields values(@SdeLayerName,@CadLayerName,@SdeField,@CadField,@FieldType,@CADTYPE)";}
        /// <summary>/// 判断数据库是否有指定键值的记录/// </summary>/// <param name="str">键值</param>/// <returns>是否存在记录的布尔值</returns>public static bool ExistsRecord(string str){string strSql = "select * from CorrespondFields where SdeField = '" + str + "' and SdeLayerName = '" + PubVariant.sdeLayerName+ "' and CadLayerName = '" + PubVariant.cadLayerName + "'";using (SqlConnection connection = new SqlConnection(PubVariant.ConnectionString)){connection.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = connection;cmd.CommandText = strSql;cmd.CommandType = CommandType.Text;SqlDataReader datareader = cmd.ExecuteReader();return datareader.HasRows;}}/// <summary>/// 执行带参数的Sql语句/// </summary>/// <param name="sqlParas">sql参数数组</param>/// <param name="strSql">要执行的sql语句</param>public static void ExecuteSql(SqlParameter[] sqlParas, string strSql){using (SqlConnection connection = new SqlConnection(PubVariant.ConnectionString)){connection.Open();using (SqlCommand cmd = new SqlCommand(strSql, connection)){foreach (SqlParameter sp in sqlParas){cmd.Parameters.Add(sp);}cmd.ExecuteNonQuery();}}}/// <summary>/// 用datagridview的数据更新数据库/// </summary>/// <param name="dgv">datagridview</param>/// <returns>更新是否成功</returns>public static bool UpdataFromDGVtoDB(DataGridView dgv){try{for (int i = 0; i < dgv.Rows.Count - 1; i++){string strCADTYPE;if (dgv.Rows[i].Cells[1].Value.ToString().StartsWith("[")){strCADTYPE = "1";}else{strCADTYPE = "2";}SqlParameter[] sqlParas = new SqlParameter[]{new SqlParameter("@SdeLayerName", PubVariant.sdeLayerName),new SqlParameter("@CadLayerName", PubVariant.cadLayerName),new SqlParameter("@SdeField", dgv.Rows[i].Cells[0].Value.ToString()),new SqlParameter("@CadField", dgv.Rows[i].Cells[1].Value.ToString()),new SqlParameter("@FieldType", dgv.Rows[i].Cells[2].Value.ToString()),new SqlParameter("@CADTYPE", strCADTYPE)                        };if (ExistsRecord(dgv.Rows[i].Cells[0].Value.ToString())){ExecuteSql(sqlParas, PubVariant.strUpdateSql);}else{ExecuteSql(sqlParas, PubVariant.strInsertSql);}}return true;}catch (Exception ex){MessageBox.Show(ex.Message, "系统提示");return false;}}

转载:http://blog.csdn.net/foreverling/article/details/36390709

DataGridView数据更新至数据库-逐条更新相关推荐

  1. 58一面:Redis数据更新,是先更新数据库还是先更新缓存?

    作者 | ^Damon 来源 | blog.csdn.net/qq_41689567/article/details/103664475 项目部分: 1.项目背景还有项目流程 2.从抓包开始到最终显示 ...

  2. oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表

    [问题]现在有两个千万级别的结构相同数据不同数据表T_SMS_PHONENO(目的表),T_SMS_PHONENO2(源表),根据源表数据更新目的表的数据. [分析]根据经验,更新方法一般有以下几种: ...

  3. Access数据库到Mysql数据库实时更新

    项目目标: 首先是将Access数据库中的大量数据(已经存好的原有百万级数据)转存到mysql数据库中,然后,随着Access中数据的增加,要同步更新mysql数据库,更新周期自定. 思路:一开始的转 ...

  4. access mysql 同步更新数据_[access 数据库同步]Access数据库到Mysql数据库实时更新

    项目目标: 首先是将Access数据库中的大量数据(已经存好的原有百万级数据)转存到mysql数据库中,然后,随着Access中数据的增加,要同步更新mysql数据库,更新周期自定. 思路:一开始的转 ...

  5. 数据库-ADONET-向数据库提交更新

    向数据库提交更新 ADONET对于提交更新的功能和控制是前所未有的.但是,如何有效的行使这种控制和能力? 很多人在ADONET中使用CommandBuilder来生成更新逻辑,有时代码段会滴油警告&q ...

  6. VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件

    VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件 目录 问题探究 图文教程 问题探究 使用Visual Studio ...

  7. JMeter对数据库的更新操作

    关于JMeter如何连接MySQL数据库,前面文章已经详解的讲解过了.因为配置数据库连是比较固定的步骤,这里就不重复讲解了. 本篇文章主要详细说明,使用JDBC Request组件,如何对数据库进行更 ...

  8. Vue数据更新但页面没有更新的多种情况

    Vue数据更新但页面没有更新的多种情况 1.Vue 无法检测实例被创建时不存在于 data 中的 变量 原因:由于 Vue 会在初始化实例时对 data中的数据执行 getter/setter 转化, ...

  9. 多套知识付费平台源码亲测在用+数据库+一键更新?功能

    多套知识付费平台源码亲测在用+数据库+一键更新?功能 A致富 学堂V2_3.4.2全解密完整安装包+直播插件+小程序+PC端 源码目录 └── A致富 学堂V2_3.4.2全解密完整安装包+直播插件+ ...

最新文章

  1. dw6能编译asp吗,让Adobe Dreamweaver CC支持ASP
  2. 一个新手上课的路程!!!
  3. new和make的区别
  4. Redis实现分布式锁1
  5. PAT甲级1146 Topological Order :[C++题解]拓扑排序、结构体存边、图论
  6. 【PHP 】伪静态 - 4. 实际运用
  7. 像烟灰一样松散(毕淑敏)
  8. 图像处理工具包ImagXpress中如何设置上下文菜单
  9. SharePoint2013 备份还原
  10. 脚本语言(确认补遗)
  11. Spring4学习笔记-泛型依赖注入
  12. win7中竟然没有telnet.exe??
  13. Hibernate学习(八):检索方式
  14. Sublime Text3配置LaTeX环境及使用Sumatra PDF作为阅读器——亲测可用
  15. 《Java核心技术36讲》读后
  16. 如何在Linux上安装和使用TeamViewer
  17. Vision Assistant Minimum Scree Resolution
  18. 1024:为什么这些游戏这么火?
  19. 迪杰斯特拉算法和弗洛伊德算法
  20. python纳甲装卦

热门文章

  1. bzoj4788: [CERC2016]Bipartite Blanket
  2. Vue防止白屏添加首屏动画
  3. 单调队列 Monotonic Queue / 单调栈 Monotonic Stack
  4. Python Day28
  5. centos 忘记 root 密码
  6. 快速了解 MySQL 的性能优化
  7. 一个通过Flash设计与Flex结合开发的网站www.mapgle.cn
  8. ASP.NET与JavaScript联合操作之一 选择DataGrid中的CheckBox控件后该行背景变色
  9. hdu1010(小狗逃迷宫)
  10. Oracle学习操作(6)函数与存储过程