DataGridView数据更新至数据库-逐条更新

简介: 首先判断是否存在指定记录,存在则执行更新语句,不存在则执行插入语句。主要用到三个函数: public class PubVariant { public static string strUpdateSql = "update CorrespondFields set CadField = @CadField,FieldType = @FieldType,C

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

 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;
            }
        }


目录
相关文章
|
7月前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
|
7月前
|
关系型数据库 MySQL 数据库
MySQL数据库-多表关联更新数据
MySQL数据库-多表关联更新数据
57 1
|
7月前
|
数据库
数据库第七次作业 更新数据
数据库第七次作业 更新数据
65 0
|
消息中间件 存储 canal
到底是先更新数据库还是先更新缓存?
很多小伙伴最近都在问我,在系统中引入缓存后,当向数据库中写入数据时,是先写数据库还是先写缓存呢?先写数据库和先写缓存有什么区别吗?今天,我们就一起来聊聊这个话题。
268 0
到底是先更新数据库还是先更新缓存?
|
Java 数据库连接 数据库
sqlSessionc操作数据库增删改无效问题
sqlSessionc操作数据库增删改无效问题
74 0
ORCALE清除全部表数据,保留表结构
ORCALE清除全部表数据,保留表结构
133 0
|
NoSQL 关系型数据库 MySQL
记一次数据库删表事件
目前我司正处于一种混乱的开发环境中; 对于数据库字段增修都是开发人员直上服务器数据库修改(我多次强调); 我未入职前,是直接通过SFTP连接服务器,对项目进行开发和修改(话说造成代码覆盖都不知道是谁干的,多次建议开发使用Git); 入职后我写一个开发规范文档:软件开发手册(欢迎各位大佬提出意见) 虽然对开发规范有所改变,但还是因为不可抗力因素无法执行,也是造成我最近想跳槽的原因;
162 0
|
关系型数据库 MySQL 数据库
数据库同步功能要慎用
数据库同步功能要慎用
87 0
|
关系型数据库 MySQL 数据库
数据库学习-更新数据作业示例【带源码】
MySQL数据库 “更新数据” 习题示例,包含源码,能建立起对于如何更新数据的基本概念
164 0
数据库学习-更新数据作业示例【带源码】
|
SQL 存储 关系型数据库
数据库的数据定义(针对数据库或表)、数据操作和数据查询(针对表中数据)、数据控制(设置对数据库的访问权限)、事务控制(确定或者取消数据操作)
数据库的数据定义(针对数据库或表)、数据操作和数据查询(针对表中数据)、数据控制(设置对数据库的访问权限)、事务控制(确定或者取消数据操作)
177 0