目录
一、异常处理
二、程序中事务的一些用法介绍
一、异常的介绍和使用
1、异常的形式: 为了保证程序不会因为操作出现问题导致程序崩溃,需要添加异常。不处理异常会导致程序崩溃(CLR给出的 提示)
- try中写上可能会 发生异常错误的代码;程序本身会把发生异常错误的类型自动生成一个异常对象类
- catch中是捕获的异常,并处理异常,也可以写入日志(抛出和封装异常再抛出)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace exeception1
{
class Program
{
static void Main(string[] args)
{
try
{
int n = Convert.ToInt32(Console.ReadLine()); //产生异常的语句 (输入123cuowu)
Console.WriteLine("n转化为int类型后为:"+n);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);//输出产生的异常信息
}
Console.ReadKey();
}
}
}
2、异常处理的结构:
多路异常捕获:
try
{
会发生异常的代码都放在这里
}
catch(SqlException ex)//异常子类
{
SQLserver数据库异常信息;
//比如SQLserver数据库删除数据时,外键引用导致的错误 ,错误代码547
}
catch(Exception ex)//异常父类
{
SqlException异常没有捕获的异常,在这里一定能捕获
}
finally
{
不管有没有异常都会执行的代码都放在这里
}
3、对异常的处理方式:
- 立即处理: 产生异常后,给出提示或者处理其他逻辑使程序正常运行
- 抛出异常:对于复杂的程序,需要抛给上一层处理,也可以对异常进行封装后再抛出
二、程序中事务的一些使用介绍
在数据库端直接编写在存储过程内使用
1、为什么要使用事务: 执行多条增删改操作,保证要么都执行成功,要么都不执行
2、在程序端传输多条SQL语句的事务使用
两条一样的SQL语句:
sqlList.Add("insert into Students(studentName, gender, birthday, age, studentidno, classid) values('山运维','男','1998-07-21',23,'852074196385201234',2)");
sqlList.Add("insert into Students(studentName, gender, birthday, age, studentidno, classid) values('山运维','男','1998-07-21',23,'852074196385201234',2)");
运行结果:
其它异常信息:违反了 UNIQUE KEY 约束“uq_StudentIdNo”。不能在对象“dbo.Students”中插入重复键。重复键值为 (852074196385201234)。
语句已终止。
执行成功的事务:要么都成功,要么都失败
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//引入操作数据库所需要的命名空间
using System.Data;
using System.Data.SqlClient;
namespace text2
{
class Program
{
private static readonly string connString = @"Server=CHINA-20181227Q\server;DataBase=SMDB;User Id = sa; Password=123456";
static void Main(string[] args)
{
InsertByTransaction();
Console.ReadKey();
}
//通过传递SQL语句执行事务
public static void InsertByTransaction()
{
List<string> sqlList = new List<string>();
sqlList.Add("insert into Students(studentName, gender, birthday, age, studenti