C#与数据库访问技术总结(三)之 Connection对象的常用方法
说明:前面(一)(二)总结了数据库连接的概念以及连接数据库的字符串中的各个参数的含义。这篇随笔介绍connection对象的常用方法。
Connection对象的常用方法
Connection类型的对象用来连接数据源。在不同的数据提供者的内部,Connection对象的名称是不同的,在SQL Server Data Provider里叫SqlConnection,而在OLE DB Data Provider里叫OleDbConnection。
下面将详细介绍Connection类型对象的常用方法。
1.构造函数
构造函数用来构造Connection类型的对象。对于SqlConnection类,其构造函数说明如下表所示。
函数定义 |
参数说明 |
函数说明 |
SqlConnection() |
不带参数 |
创建SqlConnection对象 |
SqlConnection(string connectionstring) |
连接字符串 |
根据连接字符串,创建SqlConnection对象 |

1 第1种:
2
3 String ConnectionString =”server=(local); Initial Catalog =stu; ”;
4
5 SqlConnection conn=new SqlConnection();
6
7 conn.ConnectionString=ConnectionString;
8
9 conn.Open();
10
11 第2种
12
13 String cnn=”server=(local); Initial Catalog =stu; ”;
14
15 SqlConnection conn=new SqlConnection(cnn);
16
17 conn.Open();

显然使用第2种方法输入的代码要少一点,但是两种方法执行的效率并没有什么不同,另外,
如果需要重用Connection对象去使用不同的身份连接不同的数据库时,使用第一种方法则非常有效。
例如:

1 SqlConnection conn=new SqlConnection();
2
3 conn.ConnectionString=connectionString1;
4
5 conn.Open();
6
7 //访问数据库,做一些事情
8
9 conn.Close();
10
11 conn.ConnectionString=connectionString2;
12
13 conn.Open();
14
15 //访问数据库,做另外一些事情
16
17 conn.Close();

注意:只有当一个连接关闭以后才能把另一个不同的连接字符串赋值给Connection 对象。
如果不知道Connection对象在某个时候是打开是关闭时,可以检查Connection对象的State属性,它的值可以是Open,也可以是Closed,这样就可以知道连接是否是打开的。
下表说明了OleDbConnection类的构造函数。可以看出,它们和SqlConnection类的构造函数非常相近。
函数定义 |
参数说明 |
函数说明 |
OleDbConnection() |
不带参数 |
创建OleDbConnection对象 |
OleDbConnection(string connectionstring) |
连接字符串 |
根据连接字符串,创建OleDbConnection对象 |
2.Open和Close方法
Open和Close方法分别用来打开和关闭数据库连接,无参无返回值。
Open方法:使用ConnectionString所指定的属性设置打开数据库连接
Close方法:关闭与数据库的连接,这是关闭任何打开连接的首选方法
注意:数据库连接是很有价值的资源,因为连接要使用到宝贵的系统资源,如内存和网络带宽,因此对数据库的连接必须小心使用,
要在最晚的时候建立连接(调用Open方法),在最早的时候关闭连接(调用Close方法)。
也就是说在开发应用程序时,不再需要数据连接时应该立刻关闭数据连接。
这点看起来很简单,要达到这个目标也不难,关键是要有这种意识。
3、Connection对象连接数据源代码示例
以下代码演示使用连接字符串创建数据库连接的一般方式。

1 //连接Access数据库
2
3 string connStr="Provider= Microsoft.Jet.OleDB.4.0;Data Source=D:\login.mdb"
4
5 //根据字符串创建OleDbConnection连接对象
6
7 OleDbConnection objConnection=new OleDbConnection(strConnect);
8
9 //打开数据源连接
10
11 if(objConnection.State==ConnectionState.Closed)
12
13 {
14
15 objConnection.Open();
16
17 }
18
19 //使用结束后关闭数据源连接
20
21 if(objConnection.State==ConnectionState.Open)
22
23 {
24
25 objConnection.Close();
26
27 }

在这段代码里的业务逻辑是:
(1)创建连接字符串,从中可以看出Connection对象是使用OleDB类型的Data Provider,连接到D盘下login.mdb的Access数据库中。
(2)根据连接字符串,创建Connection类型的对象,这里用到了OleDbConnection。
(3)打开数据源的连接。
(4)执行数据库的访问操作代码。
(5)关闭数据源连接。
完整案例
1、利用SQL Server2000建立一个数据库Student,并建立相应的表studentInfo
2、用Visual C#20XX建立一个基于Window的应用程序,并添加一个按钮。
3、双击按钮,自动切换到后台代码编辑文件Form1.cs中,并自动添加了与此按钮的Click事件相关的处理程序button1_Click(object sender, EventArgs e)
4、在Form1.cs文件中添加如下命名空间:
using System.Data.SqlClient;
5、在事件处理程序button1_Click中添加代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace DataBase { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection(); //conn.ConnectionString = "server=(local);user id=sa;Initial Catalog=Student;pwd=;"; conn.ConnectionString = "server=(local);Initial Catalog=Student;Integrated Security=SSPI;"; conn.Open(); if (conn.State == ConnectionState.Open) { MessageBox.Show("连接已经打开"); } conn.Close(); if (conn.State == ConnectionState.Closed) { MessageBox.Show("连接已经关闭"); } } catch (Exception ex) { MessageBox.Show("数据库连接失败" + ex.Message); } } } }
C#与数据库访问技术总结(三)之 Connection对象的常用方法的更多相关文章
- C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看
数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...
- C#与数据库访问技术总结(十八)
ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库 ...
- c# 窗体开发4 数据库访问技术
ADO.NET的名称起源于ADO(ACTIVEX DATA OBJECTS) USING SYSTEM; USING SYSTEM.COLLECTIONS.GENERIC; USING SYSTEM. ...
- 数据库访问技术 odbc dao rdo uda jet oledb
一.UDA(UniversalDataAccess) 这是微软提供的通用数据访问策略.包括ADO.OLEDB和ODBC.它不光提供了数据库的访 问能力,对于其它的数据存储技术也同样支持,如目录服务.E ...
- C#与数据库访问技术总结(七)综合示例
综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返 ...
- C#与数据库访问技术总结(五)之Command对象的常用方法
Command对象的常用方法 说明:上篇总结了Command对象的几个数据成员,这节总结Command对象的常用方法. 同样,在不同的数据提供者的内部,Command对象的名称是不同的,在SQL Se ...
- C#与数据库访问技术总结(十七)
使用DataSet对象访问数据库 当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为ad ...
- C#与数据库访问技术总结(十六)之 DataSet对象
DataSet对象 DataSet对象可以用来存储从数据库查询到的数据结果,由于它在获得数据或更新数据后立即与数据库断开,所以程序员能用此高效地访问和操作数据库. 并且,由于DataSet对象具有离线 ...
- C#与数据库访问技术总结(十四)之DataAdapter对象
DataAdapter对象 DataAdapter对象主要用来承接Connection和DataSet对象. DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connectio ...
随机推荐
- oracle如何insert into 多个values
稍微熟悉Oracle的都知道,如果我们想一条SQL语句向表中插入多个值的话,如果如下语句 INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....; 这样会报错的,因为 ...
- Python函数-delattr()
delattr(object, name) 作用: 删除object对象名为name的属性. 参数object:对象. 参数name:属性名称字符串. >>> class Perso ...
- angular : copy vs extend
While using AngularJS, we come across some situation in which we need to copy one object to another ...
- Python 修改ha配置文件
任务要求: 1.用户输入字符串 {"backend": "test.oldboy.org","record":{"server&q ...
- linux user date
useradd username 添加用户 userdel username 删除用户 passwd username 设置用户密码 passwd 设置当前用户密码 passwd -d usernam ...
- 在<img src="..." title="..."> 中使title的内容换行的方法
在<img src="..." title="...">中要使TITILE的内容换行,不能使用html标签,只能用ASCII码,方法如下: < ...
- Cortex-M0(+)内核的处理器架构简介
Cortex-M0(+)内核的处理器架构简介 2015年03月02日 16:51:12 阅读数:3158 系统架构 Cortex-M0处理器具有32位系统总线接口,以及32位地址线,即有4GB的地址空 ...
- linux指令 apt-grt指令使用
apt-get 是linux的一条指令,主流的linux版本Debian和ubuntu都使用apt-get来安装软件.那么,需安装的软件都放在哪里呢??? apt-get 利用软件安装源来安装软件,其 ...
- codeforce -39E-What Has Dirichlet Got to Do with That?(博弈+dfs)
You all know the Dirichlet principle, the point of which is that if n boxes have no less than n + 1 ...
- Angular学习笔记-问题列表(2016.4.7)
1.控制器中注入服务时,出问题,当前pageInit这个页面无法加载,页面无报错信息. var homepage = angular.module('homepage'); homepage.cont ...