ADO.NET事务处理,初始回调函数,多张表的数据在同一个DataGridView中展示
执行ADO.NET事务包含四个步骤,接下来以Transaction对象为例介绍。
(1)调用SQLConnection对象的BeginTransaction()方法,创建一个SQLTransaction对象,标志事务开始
(2)将创建的SQLTransaction对象分配给要执行的SqlCommand的Transaction属性。
(3)调用相应的方法执行SQLCommand命令。
(4)调用SQLTransaction的Commit()方法完成事务,或调用Rollback()方法终止事务。
string str = "data source=.;initial catalog=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);
string sql = "insrt into grad valves(@gname)";
SqlCommand cmd = new SqlCommand(sql, con);
SqlParameter para = new SqlParameter("@gname", textBox1.Text);
SqlTransaction tran = con.BeginTransaction();
cmd.Parameters.Add(para);
con.Open();
cmd.Transaction = tran;
int count = ;
try
{
count = cmd.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{ tran.Rollback();
MessageBox.Show(ex.Message);
}
if (count > )
{
MessageBox.Show("成功");
}
con.Close();
注意:在调用BeginTransaction()方法开始事务前,要打开数据库连接,否则将出现异常。
回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
机制:
private void FrmMain_Load(object sender, EventArgs e)
{
List<Entity> list=loagingInfo();
dgvList.DataSource = list;
}
public List<Entity> loagingInfo()
{
List<Entity> stuList = new List<Entity>(); //连接数据库
string str = "Data Source=.;initial catalog=MySchool;user id=sa;pwd=347222";
SqlConnection con = new SqlConnection(str);
string sql = @"select studentname,subjectname,StudentResult,ExamDate
from Student,Subject,Result
where student.StudentNo=Result.StudentNo
and result.SubjectId=Subject.SubjectId";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
foreach (DataRow item in dt.Rows)
{
Entity entity = new Entity();
entity.studentName = item["studentname"].ToString();
entity.subjectName = item["subjectname"].ToString();
entity.result = Convert.ToInt32(item["StudentResult"]);
entity.examDate = Convert.ToDateTime(item["ExamDate"]);
stuList.Add(entity);
} return stuList;
}

ADO.NET事务处理,初始回调函数,多张表的数据在同一个DataGridView中展示的更多相关文章
- 两种方法将oracle数据库中的一张表的数据导入到另外一个oracle数据库中
oracle数据库实现一张表的数据导入到另外一个数据库的表中的方法有很多,在这介绍两个. 第一种,把oracle查询的数据导出为sql文件,执行sql文件里的insert语句,如下: 第一步,导出sq ...
- Oracle两张表关联批量更新其中一张表的数据
Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXI ...
- 关于跨DB增量(增、改)同步两张表的数据小技巧
有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB ...
- 一条sql解决.一张表的数据复制到另外一张表
如何把一个表的数组复制到一张表?也许很多人会把这个表查出来的数据再插入到另外一张表里面,这样很麻烦又要写代码逻辑去处理,其实一条sql语句就可以把一张表的数据复制到另外一张表,或者一张表的某一条数据复 ...
- 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中
1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件②安装MySQL数据库(下载地址:https://www.mysql.com/)③安装Navicat Premium来查看数据 ...
- 通过mapreduce把mysql的一张表的数据导到另外一张表中
怎么安装hadoop集群我在这里就不多说了,我这里安装的是三节点的集群 先在主节点安装mysql 启动mysql 登录mysql 创建数据库,创建表格,先把数据加载到表格 t ,表格t2是空的 mys ...
- hive sql 查询一张表的数据不在另一张表中
有时,我们需要对比两张表的数据,找到在其中一张表,不在另一张表中的数据 hql 如下: SELECT * FROM (SELECT id FROM a WHERE dt = '2019-03-17' ...
- 【mybatis】mysql级联更新两个表或多张表的数据
例如 info表和relation表有关联,现在要在一个sql语句中同时级联更新两张表的数据 update security_code_info info LEFT JOIN security_cod ...
- 转 A 、B两张表,找出ID字段中,存在A表,但是不存在B表的数据
A.B两张表,找出ID字段中,存在A表,但是不存在B表的数据,A表总共13W数据,去重后大约3万条数据,B表有2W条数据,且B表的ID有索引. 方法一 使用not in,容易理解,效率低. selec ...
随机推荐
- 个人简历制作(Dreamweaver)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- tesseract-ocr了解
安装文件下载地址 http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.01-1.exe README For the lat ...
- CSS深入研究:display的恐怖故事解密(2) - table-cell(转)
http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html 上集<CSS深入研究:display的恐怖故事解密(1) - ...
- mypc--------------->lspci,lsusb,meminfo cpuinfo ioports filesystems interrupts mounts net partitions pagetypeinfo slabinfo timer_list uptime version zoneinfo 等配置信息
[user@username home]$ lspci00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Contro ...
- hibernate对象关系实现(一)一对多
hibernate是对jdk一个封装工具,实现对象和数据库之间数据映射.使用时涉及到四个问题:a.对象之间的关系在类中的体现:b,对象关系对应的数据库中表之间体现:c.实现a,b在hibernate的 ...
- LotteryDrawing
import java.util.*; public class MyTest{ public static void main(String[] args){ Scanner in = new Sc ...
- git各种撤销操作
撤销git add: git reset HEAD+路径 或者git reset --+路径 撤销commit: 1.回退到具体的嘻哈值 git reset --hard 2.回退后仍包含本地 ...
- poj1755Triathlon(半平面交)
链接 根据题意可以设三段路程分别为A,B,C 那么总时间t = A/V+B/U+C/W. 这样根据时间大小关系可以跟其余n-1个联立形成n-1个方程. 化简后为A(1/vj-1/vi)+B(1/uj- ...
- mysql 求时间段平均值
考虑下面的需求,在一段时间内,间隔一段时间,取一个平均值,把所有的平均值取出来,怎么办?思路:在存储过程中,拼接sql语句.根据起始时间和结束时间,while循环每次加一段时间.DROP PROCED ...
- Docker-网络基础配置
从外部访问容器 指定容器端口随机映射主机端口 [root@wls12c /]$ docker run -p -d --name web tomcat /bin/bash -c /root/apache ...