ADO.NET 之 二
2012-12-29 23:09 y-z-f 阅读(317) 评论(0) 编辑 收藏 举报
二、数据库连接篇
在 AOD.NET 中我们都是使用 SqlConnection 类来连接数据库的,所以这节我们主要介绍的是
1. SqlConnection类的详细使用方法
1.1 构造函数
1 //1. 2 SqlConnection() 3 //2. 4 SqlConnection( string connectionString )
1.2 或者设置连接数据库的字符串
1 SqlConnection con = new SqlConnection(); 2 con.ConnectionString = ""; //设置数据库的连接字符串
1.3 设置连接超时
1 SqlConnection con = new SqlConnection(); 2 con.ConnectionTimeout = 30;// 设置连接超时
1.4 设置需要连接的数据库名称
1 SqlConnection con = new SqlConnection(); 2 con.Database = ""; //设置需要连接的数据库名称
1.5 设置需要连接的数据库实例名称
1 SqlConnection con = new SqlConnection(); 2 con.DataSource = "";// 设置需要连接的数据库实例名称
1.6 获取实例通信的网络数据包的大小(以字节为单位)
1 SqlConnection con = new SqlConnection(); 2 int pack_size = con.PacketSize(); //获得实例通信的数据包大小
1.7 获取当前数据库连接状态
1 SqlConnection con = new SqlConnection(); 2 ConnectionState state = con.State; //获得当前的链接状态
其中的值为枚举:
1 [Flags] 2 public enum ConnectionState 3 { 4 //链接处于关闭状态 5 Closed = 0, 6 //链接处于打开状态 7 Open = 1, 8 //正在与数据库链接 9 Connecting = 2, 10 //正在执行命令 11 Executing = 4, 12 //正在检索数据 13 Fetching = 8, 14 //与数据库连接中断 15 Broken = 16; 16 }
在实际中可以判断此连接状态决定是否执行有关功能.
1.8 打开数据库连接
1 SqlConnection con = new SqlConnection(); 2 con.Open(); //打开数据库连接
但是这边有一个问题不是每次打开都可以成功的,即使你的数据库连接字符串是正确的.
所以我们还需要 catch 以下异常来处理
- InvalidOperationExcuption:
未指定数据源或服务器,无法进行连接/连接已打开 - SqlException:
在连接过程中出现错误
1 SqlConnection con = new SqlConnection(); 2 try 3 { 4 con.Open(); 5 } 6 catch( InvalidOperationExcuption e ) 7 { 8 //处理不能打开或连接已打开 9 } 10 catch( SqlException e ) 11 { 12 //处理连接过程中的错误 13 }
1.9 改变需要连接的数据库名称
1 using(SqlConnection con = new SqlConnection()) 2 { 3 con.Open(); 4 con.ChangeDatabase("NORTHWND"); 5 //... 6 }
当然改变了需要连接的数据库名称中假如服务器没有该数据库名称或者没有权限打开等等都是会发生的事情,所以我们要处理可能的异常
1 using(SqlConneciton con = new SqlConnection()) 2 { 3 con.Open(); 4 try 5 { 6 con.ChangeDatabase("NORTHWND"); 7 } 8 catch( ArgumentExcuption e ) 9 { 10 //数据库名称无效 11 } 12 catch( InvalidOperationExcuption e ) 13 { 14 //连接失败 15 } 16 catch( SqlException e ) 17 { 18 //不能更改数据库 19 } 20 }
1.10 更改用于连接数据库的用户密码
1 using(SqlConnection con = new SqlConnection()) 2 { 3 con.ChangePassword(""); //修改密码 4 }
1.11 关闭连接
1 using(SqlConnection con = new SqlConnection()) 2 { 3 con.Open(); 4 con.Close(); 5 }
1.12 创建一个SqlCommand对象
using(SqlConnection con = new SqlConnction()) { con.Open(); SqlCommand cmd = con.CreateCommand();//创建一个SqlCommand对象 }
1.13 事件
[1]返回一个警告或信息性消息时发生
using( SqlConnction con = new SlqConnection() ) { con.InfoMessage += new SqlInfoMessageEventHandler() } public void DealWithSqlInfo( Object sender , SqlInfoMessageEventArgs e ) { //do something }
[2]当连接状态更改时发生
using(SqlConnection con = new SqlConnection() ) { con.StateChange += new StateChangeEventHandler(); } public void DealWithStateChg( Object sender , StateChangeEventArgs e ) { //处理状态改变事件 }
到这里为止就都是关于 SqlConnection 的知识了,这样基本上大家对于连接导数据这部分可以更好的理解了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?