C# 语言中 Connection 类是 ADO.NET 组件连接数据库时第一个要使用的类,也是通过编程访问数据库的第一步。

接下来我们来了解一下 Connection 类中的常用属性和方法,以及如何连接 SQL Server 数据库。

Connection 类概述

Connection 类根据要访问的数据和访问方式不同,使用的命名空间也不同,类名也稍有区别,在这里我们使用的是 SqlConnection 类,以及微软提供的 SQL Server 2014 数据库。

SqlConnection 类中提供的常用属性和方法如下表所示。

属性或方法 说明
SqlConnection() 无参构造方法
SqlConnection(string connectionstring) 带参数的构造方法,数据库连接字符串作为参数
Connectionstring 属性,获取或设置数据库的连接串
State 属性,获取当前数据库的状态,由枚举类型 Connectionstate 为其提供值
ConnectionTimeout 属性,获取在尝试连接时终止尝试并生成错误之前所等待的时间
DataSource 属性,获取要连接的 SQL Server 的实例名
Open() 方法,打开一个数据库连接
Close() 方法,关闭数据库连接
BeginTransaction() 方法,开始一个数据库事务

使用 Connection 类连接数据库

在使用 Connection 类连接 SQL Server 2014 时,先要编写数据库连接串。

数据库连接串的书写方法有很多,这里介绍两种常用的方法。

第1种方式

server = 服务器名称 / 数据库的实例名 ; uid = 登录名 ; pwd = 密码 ; database = 数据库名称

其中:

  • server:用于指定要访问数据库的数据库实例名,服务器名称可以换成 IP
    地址或者数据库所在的计算机名称,如果访问的是本机数据库,则可以使用“.”来代替,如果使用的是默认的数据库实例名,则可以省略数据库实例名。例如连接的是本机的默认数据库,则可以写成“server
    = .”。
  • uid:登录到指定 SQL Server 数据库实例的用户名,相当于以 SQL Server 身份验证方式登录数据库时使用的用户名,例如 sa 用户。
  • pwd:与 uid 用户对应的密码。
  • database:要访问数据库实例下的数据库名。

第2种方式

Data Source = 服务器名称 \ 数据库实例名 ; Initial Catalog = 数据库名称 ; User ID = 用户名 ; Password = 密码

其中:

  • Data Source:与第1种连接串写法中的 server 属性的写法一样,用于指定数据库所在的服务器名称和数据库实例名,如果连接的是本机的默认数据库实例,则写成“Data Source=. ”的形式。
  • Initial Catalog:与第 1 种连接串写法中的 database 属性的写法一样,用于指定在 Data Source 中数据库实例下的数据库名。
  • User ID:与第 1 种连接串写法中的 uid 属性的写法一样,用于指定登录数据库的用户名。
  • Password:与第 1 种连接串写法中的 pwd 属性的写法一样,用于指定 User ID 用户名所对应的密码。

此外,还可以在连接字符串中使用 Integrate Security = True 的属性,省略用户名和密码,即以 Windows 身份验证方式登录 SQL Server 数据库。

将数据库连接更改如下:

Data Source = 服务器名称 \ 数据库实例名 ; Initial Catalog = 数据库名称 ; Integrate Security = True

需要注意的是,由于在使用 Windows 身份验证的方式登录数据库时,会对数据库的安全性造成一定的影响,因此不建议使用 Windows 身份验证的方法,而是使用 SQL Server 验证方式登录数据库,即指定用户名和密码。

提示:在 SQL Server 2014 中更改数据库的身份验证方式并不复杂,只需要在 SQL Server 的 SQL Server
Management Studio 2014 中右击数据库的服务器结点,弹出如下图所示的服务器属性界面,并在界面中选择“安全性”选项。

在该界面中可以通过选择“服务器身份验证”中的两个选项来切换身份验证方式,默认情况下选中“Windows 身份验证模式”。

在选中任意一种身份验证模式后需要重启 SQL Server 服务器才能完成服务器身份验证模式的更改。

在完成了数据库连接串的编写后即可使用 SqlConnection 类与数据库连接,分以下 3 步完成。

1) 创建 SqlConnection 类的实例

对于 SqlConnection 类来说,上表中提供了两个构造方法,通常是使用带一个字符串参数的构造方法来设置数据库的连接串创建其实例,语句形式如下。

SqlConnection 连接对象名 = new SqlConnection( 数据库连接串 );

2) 打开数据库连接

在创建 SqlConnection 连接类的实例后并没有连接上数据库,需要使用连接类的 Open 方法打开数据库的连接。

在使用 Open 方法打开数据库连接时,如果数据库的连接串不正确或者数据库的服务处于关闭状态,会出现打开数据库失败的相关异常,因此需要通过异常处理来处理异常。

打开数据库连接的语句形式如下。

连接对象名.Open();

3) 关闭数据库连接

在对数据库的操作结束后要将数据库的连接断开,以节省数据库连接的资源。

关闭数据库连接的语句形式如下。

连接对象名.Close();

如果在打开数据库连接时使用了异常处理,则将关闭数据库连接的语句放到异常处理的 finally 语句中,这样能保证无论是否发生了异常都将数据库连接断开,以释放资源。

除了使用异常处理的方式释放资源外,还可以使用 using 的方式释放资源。

具体的语句如下。

using(SqlConnection 连接对象名 = new SQLConnection( 数据库连接串 ))
{
    //打开数据库连接
    //对数据库先关操作的语句
}

using 关键字的用法主要有两个,一个是引用命名空间,一个是创建非托管资源对象。

在 .NET 平台上资源分为托管资源和非托管资源,托管资源是由 .NET 框架直接提供对其资源在内存中的管理,例如声明的变量;非托管资源则不能直接由 .NET 框架对其管理,需要使用代码来释放资源,例如数据库资源、操作系统资源等。

下面通过实例来演示 SqlConnection 类的使用。

【实例 1】创建与本机 SQL Server 数据库的连接,并使用异常处理。

根据题目要求,连接 SQL Server 数据库时使用的用户名为 sa、密码为 pwdpwd,连接的数据库为test。

创建 Windows 窗体应用程序,并在窗体上放置一个按钮,在按钮的单击事件中加入以下代码。

  1. //编写数据库连接串
  2. string connStr = "Data source=.;Initial Catalog=test;User ID=sa;Password=pwdpwd";
  3. //创建SqlConnection的实例
  4. SqlConnection conn = null;
  5. try
  6. {
  7. conn = new SqlConnection(connStr);
  8. //打开数据库连接
  9. conn.Open();
  10. MessageBox.Show("数据库连接成功!");
  11. }
  12. catch(Exception ex)
  13. {
  14. MessageBox.Show("数据库连接失败!" + ex.Message);
  15. }
  16. finally
  17. {
  18. if (conn != null)
  19. {
  20. //关闭数据库连接
  21. conn.Close();
  22. }
  23. }

执行上面的代码,效果如下图所示。

从上面的执行效果可以看出,数据库已经成功。

【实例 2】在上一实例的基础上使用 using 关键字释放资源。

根据题目要求,省略了 finally 部分的语句,代码如下。

  1. //编写数据库连接串
  2. string connStr = "Data source=.;Initial Catalog=test;User ID=sa;Password=pwdpwd";
  3. //创建SqlConnection的实例
  4. try
  5. {
  6. using(SqlConnection conn=new SqlConnection(connStr))
  7. {
  8. //打开数据库连接
  9. conn.Open();
  10. MessageBox.Show("数据库连接成功!");
  11. }
  12. }
  13. catch(Exception ex)
  14. {
  15. MessageBox.Show("数据库连接失败!" + ex.Message);
  16. }

执行上面的代码,效果与上一实例—样。

C# Connection:连接数据库---转载的更多相关文章

  1. ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据

    使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.S ...

  2. ArcGIS 10.1 如何连接数据库(转载)

    ArcGIS 10.1如何连接数据库 最近在使用ArcGIS 10.1的数据库,在使用的过程中发现了跟以往不太一样的地方,在这里将自己的心得和想法跟大家分享一下(使用Postgresql),根据使用过 ...

  3. [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载

    问题: 一. 1. Spring 如何处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3. propagati ...

  4. 数据库连接池中是将connection放进threadlocal里的

    我有几点不太明白的,望各位大侠指教下.1.j2ee的应用中,有一个用户请求就会启动一个线程.而如果我们把connection放在Threadlocal里的话,那么我们的程序只需要一个connectio ...

  5. express连接数据库 读取表

    connection 连接数据库    connection.query 查询表   1.依赖 const mysql = require('mysql'); 连接数据库代码 var connecti ...

  6. @Transactional(转)

    概述@Transactional 是声明式事务管理 编程中使用的注解 添加位置 接口实现类或接口实现方法上,而不是接口类中访问权限:public 的方法才起作用 @Transactional 注解应该 ...

  7. JDBC连接sql server数据库的详细步骤和代码 转

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序(只做一次): 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.C ...

  8. ADO.NET 核心对象简介

    ADO.NET是.NET中一组用于和数据源进行交互的面向对象类库,提供了数据访问的高层接口. ADO.NOT类库在System.Data命名空间内,根据我们访问的不同数据库选择命名空间,System. ...

  9. JDBC连接SQL Server代码模板

    *                  JDBC连接SQL Server数据库 代码模板* Connection: 连接数据库并担任传送数据的任务:* Statement :  执行SQL语句:* Re ...

随机推荐

  1. VMware升级到15版本虚拟机黑屏的解决方法

    1.启动VMware15虚拟机,在菜单栏找到:虚拟机→管理→更改硬件兼容性 2.打开该项,弹出更改硬件兼容性向导对话框,点  下一步,接下来把硬件兼容性改为Workstation 12.x 3.根据提 ...

  2. Springboot学习:日志

    介绍 市面上的日志框架: JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.... 日志门面 (日志的抽象层) 日志实现 JCL(Jakarta Com ...

  3. linux克隆多台虚拟机后网络无法识别更无法连接上网的解决方法

    本人近期学习LINUX,想克隆多台CENTOS来练习在LINUX下安装软件,配置环境.因为对系统不是很熟悉,就想保持一个纯净版本,如果系统玩坏了就删除再重新克隆一个继续配置,以节省时间.后来发现,克隆 ...

  4. 【剑指Offer面试编程题】题目1508:把字符串转换成整数--九度OJ

    题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n&l ...

  5. mxgraph初体验

    最近公司让学习了mxgraph,简单总结一下 (1)mxGraph学习路径 1)API:http://jgraph.github.io/mxgraph/docs/js-api/files/index- ...

  6. 解决误删libc.so.6过程的参考资料

    说说前因后果:因为之前安装了filezilla,发现安装不了,说是libc.so.6老旧了.差不多过了一个星期,也就是前天升级gcc成功后决定再解决这个问题.gcc升级成功后,决定创建新链接...然后 ...

  7. SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xd0 in position 2: invalid continuation byte

    [root@hostuser src]# python3 subprocess_popen.py File "subprocess_popen.py", line 23Syntax ...

  8. MySQL 之数据库初识

    一 数据库概述 数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的.过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用. 数据库是长期存放在计算机内.有组 ...

  9. Java 代码中如何调用 第三方Api

    在代码中调用第三方API 获取数据 package com.example.demo.utils; import com.alibaba.fastjson.JSONObject; import lom ...

  10. Manacher(马拉车)算法

    Manacher算法是一个求字符串的最长回文子串一种非常高效的方法,其时间复杂度为O(n).下面分析以下其实行原理及代码: 1.首先对字符串进行预处理 因为回文分为奇回文和偶回文,分类处理比较麻烦,所 ...