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

简介:

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

 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

目录
相关文章
|
存储 数据处理 数据库
数据库索引策略如何影响数据更新操作的性能?
【7月更文挑战第3天】数据库索引策略如何影响数据更新操作的性能?
659 1
|
SQL 数据处理 数据库
SQL进阶之路:深入解析数据更新与删除技巧——掌握批量操作、条件筛选、子查询和事务处理,提升数据库维护效率与准确性
【8月更文挑战第31天】在数据库管理和应用开发中,数据的更新和删除至关重要,直接影响数据准确性、一致性和性能。本文通过具体案例,深入解析SQL中的高级更新(UPDATE)和删除(DELETE)技巧,包括批量更新、基于条件的删除以及使用子查询和事务处理复杂场景等,帮助读者提升数据处理能力。掌握这些技巧能够有效提高数据库性能并确保数据一致性。
928 0
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
339 0
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据更新
【数据库SQL server】关系数据库标准语言SQL之数据更新
277 0
|
SQL 关系型数据库 MySQL
『 MySQL数据库 』CRUD之UD,表的数据更新(修改)及删除
『 MySQL数据库 』CRUD之UD,表的数据更新(修改)及删除
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
688 158
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1827 152
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1245 156
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
822 156

热门文章

最新文章