C# 执行多条SQL语句,实现数据库事务(通过Hashtable存储数据) .

C# SqlTransaction 多个方法采用同一个事务,保证操作统一性,数据一致性 由于业务需求,一次执行多个Sql语句时,需要保证一批sql语句必须全部执行成功才能提交,有一个sql语句执行失败,则其他sql语句也不能执行. 故需采用事务,且有两种方法: 一种是执行sqlserver存储过程, 另一种是采用sqltransaction类 本文使用sqltransaction类,且使用多个方法采用同一个事务,保证数据完整性. 建表 CREATE TABLE Students( N... 阅读详情

1)Web.config中添加连接数据库的语句

<add key="ConnectionString" value="server=./sqlexpress;database=transactionDemo;uid=sa;pwd=123456"/>

 

2)在表现层Default.aspx.cs中添加多条需要插入数据库的数据。

public void Add()
        {
            List<Maticsoft.Model.ClassDemo> modellist = new List<Maticsoft.Model.ClassDemo>();
            modellist.Add(new Maticsoft.Model.ClassDemo("张三1", "浙江1"));
            modellist.Add(new Maticsoft.Model.ClassDemo("张三2", "浙江2"));
            modellist.Add(new Maticsoft.Model.ClassDemo("张三3张三3张三3张三3", "浙江3"));
            bll.Add(modellist);
        }

3)在业务逻辑层ClassDemo.cs中添加业务逻辑

        public void Add(List<Maticsoft.Model.ClassDemo> modellist)
        {
            dal.Add(modellist);
        }

4)在数据访问层ClassDemo.cs、DbHelperSQL.cs中添加将数据插入数据库

/// <summary>
        /// 通过事务添加多条数据
        /// </summary>
        /// <param name="modellist"></param>
        public void Add(List<Maticsoft.Model.ClassDemo> modellist)
        {
            Hashtable SQLStringList = new Hashtable();
            for (int i = 0; i < modellist.Count;i++ )
            {
                SqlParameter[] parameters = {
     new SqlParameter(string.Format("@name{0}",i), SqlDbType.NVarChar,50),
     new SqlParameter(string.Format("@address{0}",i), SqlDbType.NVarChar,50)};
                parameters[0].Value = modellist[i].name;
                parameters[1].Value = modellist[i].address;
                SQLStringList.Add(string.Format("insert into ClassDemo (name,address) values (@name{0},@address{0})", i), parameters);
            }
            DbHelperSQL.ExecuteSqlTran(SQLStringList);
        }

 

 public static string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();  

/// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
        public static void ExecuteSqlTran(Hashtable SQLStringList)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    SqlCommand cmd = new SqlCommand();
                    try
                    {
                        //循环
                        foreach (DictionaryEntry myDE in SQLStringList)
                        {
                            string cmdText = myDE.Key.ToString();
                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
                            int val = cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }
                        trans.Commit();
                    }
                    catch(Exception ex)
                    {
                        trans.Rollback();
                    }
                }
            }
        }



一个例子:

Hashtable SQLStringList = new Hashtable(); 
string cmdText = "insert into userinfo (username,userpwd)values(@username,@userpwd) "; 
SqlParameter[] cmdParms = new SqlParameter[2]; 
cmdParms[0] = new SqlParameter( "@username ", "name "); 
cmdParms[1] = new SqlParameter( "@userpwd ", "pwd "); 
....
SQLStringList.Add(cmdText, cmdParms); 
ExecuteSqlTran(SQLStringList); 

学校c#大作业在连接mysql数据库过程中遇到的坑们 目录 用到的网站 准备工作 代码中连接数据库 小问题 写在前面:这篇文档是我一年之前写学校c#大作业时遇到的坑,不赘述基本语法入门之类的东西,只把有用的干活分享出来,都是当时踩的坑。用到的网站 Visual Studio 2015 Community官方下载地址 C# 官方API文档 MySQL官方下载地址 Navicat官方下载地址 哪儿不懂就问度娘 当然谷歌更好 优快云 -“最大中文IT社区” 阅读详情

相关推荐

PHP + Apache + Mysql集成环境部署及简要教程_apache集成环境

如果将 PHP 看作一辆汽车,那么车的框架就是 PHP 本身,Zend 是车的引擎(发动机),Ext 下面的各种组件就是车的轮子,SAPI 可以看做是公路,车可以跑在不同类型的公路上,而一次 PHP 程序的执行就是汽车真正跑在公路上。要想让汽车跑得快,性能优异的引擎+合适的车轮+正确的跑道都是缺一不可的。PHP 在开发 Web 站点或一些管理系统时,需要对大量的数据进行保存,虽然 XML 文件或者文本文件也可以作为数据的载体,但不易进行管理和对大量数据的存储,所以在项目开发时,数据库就显得非常重要。

2401_89824826的博客 1330

C#执行多条SQL语句,实现数据库事务

public static void ExecuteSqlTran(ArrayList SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); ...

weixin_30612769的博客 238

model自动生成对应crud sql语句

NULL 博文链接:https://snkcxy.iteye.com/blog/1823043

C#中SqlCommandBuilder批量数据增加修改

//批量增加多笔记录  string connString = "Data Source=USER-20150605LO;Initial Catalog=JXC;Integrated Security=True";                         using (SqlConnection conn = new SqlConnection(connString))

u013154556的专栏 5124

执行多条SQL语句,实现数据库事务。

执行多条SQL语句,实现数据库事务。保证数据的准确性。可能有人会用到哦

Python实战:超分辨率图像质量评估全攻略——PSNR、SSIM、LPIPS与NIQE的代码实现与优化

本文详细介绍了在Python中实现超分辨率图像质量评估的完整方案,涵盖PSNR、SSIM、LPIPS和NIQE四大核心指标。通过模块化代码设计、多进程并行处理和GPU加速优化,帮助开发者构建高效、可扩展的评估系统,并提供了实战避坑指南与结果解读方法。

weixin_29053073的博客 475

C#一次连接数据库执行多条sql语句(三种方法)

第一种方法:             string str="server=.;uid=sa;pwd=111111;database=text_db";//连接字符串            SqlConnection SCON = null;//连接对象            SqlCommand SCom=new SqlCommand();//命令对象           

dgwind的专栏 1万+

手把手教你用西门子博图V18配置阿特拉斯PF6000拧紧枪PN通讯(附完整GSD文件与ToolsTalk配置文件)

本文详细介绍了如何使用西门子博图V18配置阿特拉斯PF6000拧紧枪的PN通讯,包括硬件连接、网络参数规划、ToolsTalk软件配置及博图工程设置。通过完整的GSD文件和配置文件,帮助工程师快速实现高精度拧紧设备与PLC的高效通讯,适用于汽车装配和电子制造等工业自动化场景。

weixin_42662293的博客 604

C# 通过事务向数据库插入多条数据(通过Hashtable存储数据)

1)Web.config中添加连接数据库的语句   2)在表现层Default.aspx.cs中添加多条需要插入数据库的数据。 public void Add()         {             List modellist = new List();             modellist.Add(new Maticsoft.Model.ClassDemo("张三

czh4869623的专栏 4924

BRepNet与图神经网络融合:提升3D CAD加工特征识别的精度与泛化能力

本文探讨了BRepNet与图神经网络(GNN)融合技术如何显著提升3D CAD加工特征识别的精度与泛化能力。通过将CAD模型视为图结构,利用GNN的消息传递机制增强对复杂拓扑关系的理解,并结合BRepNet的局部特征提取,该融合方法在MFCAD++数据集上实现了高达99.53%的准确率,有效解决了传统方法在处理复杂相交特征时的局限性,为智能制造提供了关键技术支撑。

android的专栏 776

前端宝典之七:React性能优化实战精华篇

本文主要讲解实战项目中React性能优化的方法,主要分为三个大的方面:减少不必要的组件更新、组件优化以及tree-shaking,共11个方法

franktaoge的博客 1902

asp.net(c#)同时执行多个select语句

        Hashtable hs = new Hashtable();        int j = 0;        SqlConnection con = Infcon.create();        con.Open();        SqlCommand cmd = new SqlCommand();        cmd.Connection = con;        c

bydxyj的专栏 3617

基于51单片机的校园一卡通系统(仿真)

本次设计利用LCD1604设计可视化界面,矩阵按键执行交互,继电器模拟门的开关,系统集成考勤系统、门禁系统、消费系统、充值系统。同时利用LED灯、蜂鸣器进行指示,方便用户查看状态。

MGT_9796的博客 1555

C# EF使用SqlQuery直接操作SQL查询语句或者执行过程

Entity Framework是微软出品的高级ORM框架,大多数.NET开发者对这个ORM框架应该不会陌生。本文主要罗列在.NET(ASP.NET/WINFORM)应用程序开发中使用Entity Framework直接执行SQL语句或者存储过程的一些代码片段。具体请见以下正文: 1.使用SqlQuery在已知的实体上执行SQL查询语句 using (var context = ...

a572893208的博客 2129

基于DBSCAN聚类算法的超像素实时分割

Real-Time Superpixel Segmentation by DBSCAN Clustering Algorithm 摘要 在本文中,我们提出了一种基于密度的带噪声应用空间聚类(DBSCAN)算法的50帧/秒实时图像超像素分割方法。为了降低超像素算法的计算量,我们采用了一种快速的两步框架。在第一个聚类阶段,使用具有颜色相似性和几何约束的DBSCAN算法对像素进行快速聚类,然后在第二个合并阶段,通过颜色和空间特征定义的距离度量,将小簇按其邻域合并为超像素。为了在这两个步骤中获得更好的超像素,定义了

yttt的博客 3493

【国密】基于SM2的协同签名与协同解密方案

两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。

听雨草堂 8391

mysql批量添加list数据_c# list批量添加到数据库的sql

public void AddList(List list){Hashtable SQLStringList = new Hashtable();for (int i = 0; i < list.Count; i++){MySqlParameter[] parameters = {new MySqlParameter(string.Format("@id{0}",i), MySqlDbTy...

weixin_30058099的博客 691

卡尔曼滤波器中的Q,R

对于系统状态的估计(滤波结果)所使用的信息来源于两个方面,一个是对系统状态演变模型的了解,包括系统转移矩阵和输入控制矩阵,输入孔质量等,另一方面来自于对系统状态的观测量。从上面公式来看,真正所要滤波得到的结果来自于公式(4)中的系统状态估计值x的某些分量,公式(4)的结果是由公式(1)所得到的状态预测值和来自观测量y计算得到的。所以,在不同算法中,R, Q的取值根据反应的不同量纲,可以有很大的变化,但它们的比值会决定了滤波值应该更多来自于系统模型演化的信息,还是来自于观察信号信息。

qq_43416206的博客 501

C#操作SQL Server通用类

C#操作SQL Server通用类 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Collections; using System.Data...

weixin_30408165的博客 203

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C#中HashTable的使用

C#中HashTable的使用 - [ .NET技术 C# 类 ] 一、哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值 对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/val...

weixin_33769125的博客 72

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数据库接连命令执行(一)

1 using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 5 using System.Collections; 6 7 namespace DAL 8 { 9 /// <summary> 10 /// DataBase 的摘要说明。 11 /...

weixin_30278311的博客 125

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ADO.Net中通过HashTable对SqlParameter赋值的三种方法和返回DataTable的两种方式

      一、得到数据库连接         ///         /// 得到数据连接        ///         /// 返回连接字符串        private string getConnectionString()        {             string strConn = ConfigurationSettings.AppSettings["Conn

ChessPlayer的专栏 2684

C#-利用饼形图分析市场占有率

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Da...

dxm809的博客 1501

Hashtable 的妙用

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/...

weixin_34360651的博客 108
上一篇: MySQL存储过程之事务管理
下一篇: MS SQL帐号解锁处理
oemoon
博客等级 码龄17年 19粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值