说明:前面(一)(二)总结了数据库连接的概念以及连接数据库的字符串中的各个参数的含义。这篇随笔介绍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.OpenClose方法

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对象的常用方法的更多相关文章

  1. C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看

    数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...

  2. C#与数据库访问技术总结(十八)

    ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库 ...

  3. c# 窗体开发4 数据库访问技术

    ADO.NET的名称起源于ADO(ACTIVEX DATA OBJECTS) USING SYSTEM; USING SYSTEM.COLLECTIONS.GENERIC; USING SYSTEM. ...

  4. 数据库访问技术 odbc dao rdo uda jet oledb

    一.UDA(UniversalDataAccess) 这是微软提供的通用数据访问策略.包括ADO.OLEDB和ODBC.它不光提供了数据库的访 问能力,对于其它的数据存储技术也同样支持,如目录服务.E ...

  5. C#与数据库访问技术总结(七)综合示例

    综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返 ...

  6. C#与数据库访问技术总结(五)之Command对象的常用方法

    Command对象的常用方法 说明:上篇总结了Command对象的几个数据成员,这节总结Command对象的常用方法. 同样,在不同的数据提供者的内部,Command对象的名称是不同的,在SQL Se ...

  7. C#与数据库访问技术总结(十七)

    使用DataSet对象访问数据库 当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为ad ...

  8. C#与数据库访问技术总结(十六)之 DataSet对象

    DataSet对象 DataSet对象可以用来存储从数据库查询到的数据结果,由于它在获得数据或更新数据后立即与数据库断开,所以程序员能用此高效地访问和操作数据库. 并且,由于DataSet对象具有离线 ...

  9. C#与数据库访问技术总结(十四)之DataAdapter对象

    DataAdapter对象 DataAdapter对象主要用来承接Connection和DataSet对象. DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connectio ...

随机推荐

  1. Erlang tool -- lager overload protection

    log 这个事, 说大不大说小又不小. 大点的, 可以用scribe flume 这样的系统去做, 小点的, 也就打印一个调试信息而已. 在Erlang 中, log 这事情确实比较伤, error_ ...

  2. Hibernate基础(一)

    Hibernate是ORM开源组件 源码:http://sourceforge.net/projects/hibernate/ 1.Hibernate的配置文件. 默认配置文件: hibernate. ...

  3. 天梯L2-001. 紧急救援(25分)

    L2-001. 紧急救援 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国 ...

  4. [JAVA反序列化DEMO]利用RMI进行反序列化一键启动工具

    功能: 命令行启动jar包,用户自定义启动RMI端口.默认内置Apache Commons Collections.只需一键启动即可测试java反序列化漏洞. 启动服务: [root@sevck_v3 ...

  5. HOOK技术演示

    前提:64位系统需要用64位编译dll 一.首先创建一个dll工程,取名为KeyboardHookDll,代码如下: // KeyboardHookDll.cpp : 定义 DLL 应用程序的导出函数 ...

  6. elastic(8)版本控制

    转自: http://www.cnblogs.com/AK47Sonic/p/7563393.html elasticsearch 版本控制: 内部版本控制 外部版本控制 内部版本控制: 内部版本会检 ...

  7. Ubuntu16.04下同时安装Anaconda2与Anaconda3

    转自:http://blog.csdn.net/juezhanangle/article/details/78922888 由于编程时同时需要有python2/3的环境和大量的依赖包,本文的思路是先根 ...

  8. C语言学习笔记--动态内存分配

    1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名. ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确 ...

  9. Qt creator 使用qwt

    .pro中添加 LIBS += -L”C:\Qt\Qt5.3.2\5.3\msvc2013_opengl\lib” -lqwt INCLUDEPATH += "C:\Qt\Qt5.3.2\5 ...

  10. LaTex: 表格单元格内容 分行显示/换行

    问题:如何同时让表格同一行一个单元格的文字能垂直居中?比如说文字超长超出页面范围需要分行显示 答:(来源于smth) 方案一: \newcommand{\tabincell}[2]{\begin{ta ...