异常处理:try{出错的}catch(){出异常,需要异常处理} finally{不管出不出异常都进入finally,做释放}
这样程序不会中断
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
namespace Ado.Net2
{
class Program
{
static void Main(string[] args)
{
SqlConnection conn1 = null;//因为最终要finally释放掉,所以这里赋值为空
try
{
//连接字符串的读取
string connStr = ConfigurationManager.ConnectionStrings
["connStr"].ConnectionString;
//1创建连接对象
//通过无参构造函数创建一个实例
//SqlConnection conn = new SqlConnection();
////设置他的ConnectionString字符串为connStr
//conn.ConnectionString = connStr;
//2 SqlConnection有另一个构造函数,带参数,这个参数就是连接字符串 推荐使用
// SqlConnection conn1 = new SqlConnection(connStr);//用上面读取到的字符长来做参数,创建一个连接对象
conn1 = new SqlConnection(connStr);
//实例化后就可以访问,数据源database,当前连接的状态
Console.WriteLine("连接对象打开之前");
Console.WriteLine("Data Source:(conn1.DataSource)");
Console.WriteLine("DataBase:(conn1.DataBase)");
// Console.WriteLine("ServerVersion:(conn1.ServerVersion)");
Console.WriteLine("State:(conn1.State)");
//打开连接,可以与数据库交互操作数据、查询
conn1.Open();
Console.WriteLine("连接对象打开之后");
Console.WriteLine("Data Source:{conn1.DataSource}");
Console.WriteLine("DataBase:(conn1.DataBase)");
Console.WriteLine("ServerVersion:(conn1.ServerVersion)");
Console.WriteLine("State:(conn1.State)");
//string.Format("{%b}", conn1.DataSource);
////string.Format("{%b}", conn1.DataBase);
//string.Format("{%b}", conn1.ServerVersion);
//string.Format("{%b}", conn1.State);
//交互-----执行命令,查询,添加,更新,删除
//conn1.Close();//Dispose()使得连接处于空闲状态
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);//异常信息打印出啦
//throw;
}
finally
{
conn1.Close();//不管程序最终怎样,都释放掉
}
Console.ReadKey();//暂停的
//第二种方法,使用using语句块,连接对象只在using中有效,离开using就会被释放掉
//防止打开连接忘记释放掉,最后写上conn1.close()也可以
//前提SqlConnection继承与IDisposable(提供托管对象)接口
}
}
}
网友评论