您的位置: 网站首页 > 程序开发 > C#程序设计 > 第10章 数据库操作 > 【10.2 连接数据库】

10.2 连接数据库

 

对数据库进行任何访问和操作之前必须首先连接数据库,本部分介绍从C#中连接数据库的相关知识。

10.2.1  创建数据库

SQL Server 2005 ExpressMicrosoft推出的一款产品,该产品基于SQL Server 2005技术,并且提供了免费易用的特性。

SQL Server 2005 Express具有一个简单可靠的图形用户界面(GUI)安装程序,可以引导用户完成安装过程。SQL Server Express附带的免费GUI工具包括:SQL Server Mana-

gement Studio Express Edition(启动时可以使用的技术预览版本)、Surface Area Configuration Tool SQL Server Configuration Manager。这些工具可以简化基本的数据库操作。

通过与Visual C# 2005项目的集成,数据库应用程序的设计和开发也变得更加简单。

Visual C# 2005中通常提供了SQL Server 2005 Express版本的数据库。如果读者在安装Visual C# 2005时选择了默认安装,那么就应该已经安装好了SQL Server 2005 Express数据库。如果没有安装的读者可以到微软的网站下载该软件。安装完毕后,右击“我的电脑”图标,在弹出的菜单中选择“管理”命令,如图10-1所示。

10-1  计算机管理

在左侧的列表中选择“服务和应用程序”选项,如果安装正确的话可以看到“SQL Server配置管理器”节点。此处可以对SQL Server 2005 Express进行管理。

确认SQL Server 2005 Express的状态为“正在运行”后,可以从Visual Studio 2005的“服务器资源管理器”面板中访问该数据库。通过“服务器资源管理器”面板访问SQL Server 2005 Express,如图10-2所示。

右击“数据连接”选项,选择“创建新的数据库”命令,弹出窗口如图10-3所示。

              

10-2  服务器资源管理器面板                  10-3  创建新数据库对话框

输入合适的数据库名称,如“Test”,单击“确定”按钮即可创建新的数据库。新创建的数据库会自动添加到“服务器资源管理器”面板的列表中。

下面介绍如何适用Visual Studio 2005来使用SQL Server 2005 Express数据库。

1.定义、删除与修改数据表

在“服务器资源管理器”面板中选择“数据连接”选项,右击新建的Test数据库中找到“表”节点,在弹出的菜单中选择“添加新表”命令,如图10-4所示。

10-4  添加新表命令

Visual Studio 2005将自动转入创建数据表的界面,如图10-5所示。

10-5  创建数据表

在此输入列名,选择数据类型,选择是否允许该列为空等,如图10-6所示。建立一个表示学生的表,表中仅包括两列,一列为学生的学号(ID),另一列为学生的姓名(Name)。

10-6  创建新表

ID设置为主键,主键就是表中的唯一索引,主键不允许重复,通过主键可以唯一的查找到整条数据记录。设置主键的方法为右击相应列,在弹出的菜单中选择“设置主键”命令。

单击工具栏上的“生成更改脚本”按钮,弹出如图10-7所示的对话框。

10-7  保存更改脚本对话框

10-7中显示窗体中有一个文本框,文本框中的内容就是一段完整的SQL语言脚本。内容如下:

/*为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

CREATE TABLE dbo.Student

    (

    ID nchar(10) NOT NULL,

    Name nchar(10) NOT NULL

    )  ON [PRIMARY]

GO

ALTER TABLE dbo. Student ADD CONSTRAINT

    PK_Table2 PRIMARY KEY CLUSTERED

    (

    ID

    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_

LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

 

GO

COMMIT

其中如下的代码建立了表Student

CREATE TABLE dbo.Student

    (

    ID nchar(10) NOT NULL,

    Name nchar(10) NOT NULL

    )

Create Table关键字用于表示建立表,后面跟的是表名。小括号中的内容是列的详细信息,包括列名,数据类型和是否允许为空。如下的代码为表建立了主键。

ALTER TABLE dbo. Student ADD CONSTRAINT

    PK_Table2 PRIMARY KEY CLUSTERED

    (

    ID

    )

Alter Table关键字表示修改表的属性,后面跟的是表名,后面的ADD Constraint表示增加约束,此处的约束指的就是主键约束。小括号中的内容是将要设置为主键的列。

Visual Studio 2005中只要单击“保存”按钮就可以添加此表到数据库中,添加完毕后如图10-8所示。

表中列出了刚刚添加的两个列。选中Student表后直接按Delete键即可将其删除。

2.显示数据

右击表Student,选择弹出菜单中的“显示表数据”命令,如图10-9所示。Visual Studio 2005将会自动打开显示数据界面,如图10-10所示。

               

10-8  服务器资源管理器面板                          10-9  显示数据

10-10  显示数据界面

由于Student表是一个新表,因此没有任何数据。直接在IDName列的下方输入相应数据即可添加数据至表Student中。如图10-11所示。

10-11  输入数据

可以看到,当输入数据后,Visual Studio 2005会提示数据未保存,并显示一个红色底色的叹号标志。输入完毕后,按回车键即可保存数据。

至此,已经成功的向数据表里添加了一条数据,其ID为“0001”,Name为“Zhang”。

SQL语言同样提供相应的插入数据的支持,上述插入数据的过程可以用如下的SQL语句执行。

INSERT INTO [Student] ([ID], [Name])

VALUES

  ('0001', 'Zhang')

GO

SQL语言中用Insert Into表示插入数据,后面跟的是表名Student,小括号中指出了要向那些列中插入数据,Values表示要插入的数据,其中数据在后面的小括号中指明。

同样可以在此界面中对已有的数据进行更改,如将刚才输入的数据修改为“0001”和“Li”,如图10-12所示。

10-12  修改数据

2.查询

可以在Visual Studio 2005中进行数据查询工作,在相应的数据表上右击,选择“新建查询”命令,如图10-13所示。

Visual Studio 2005将弹出一个对话框,提示读者选择要查询的表,如图10-14所示。选择Student表,单击“添加”按钮,Visual Studio 2005将自动将表添加到查询界面中,如图10-15所示。

        

10-13  新建查询                               10-14  添加表

选择Student表的ID列和Name列,将在下方的列表中显示这俩列,如图10-16所示。

列表中可以选择查询结果是否排序,按哪列排序等等,其中筛选器是最为重要的一个参数。如果想要查询ID为“0001”的数据记录,在筛选器中输入0001即可。

10-15  查询界面

10-16  列表

在下方的SQL语句窗口中会即时的显示变化,此次查询对应的SQL语句如下:

SELECT ID, Name

FROM Student

WHERE (ID = N'0001')

ORDER BY ID

Select关键字用于表示查询,后面跟的是列名,From关键字表示从哪个表中查询。Where子句表示查询的条件,如此处查询ID0001的记录,Order By表示按某列排序,此处是按ID列排序。执行查询,结果如图10-17所示。

10-17  查询结果

10.2.2  SqlConnection

SqlConnection类用于发起向SQL数据库的连接。这其中包括SQL ExpressSQL Server的多个版本。

在连接时,需要给出数据库的相关参数。在C#中,一般被称为连接字符串,即Connection String。在连接字符串中一般会给出数据库服务器的表示,用户名和密码等相关信息。

使用数据库连接类SqlConnection类之前,需要引用System.Data.SqlClient命名空间。使用SqlConnection类进行连接时即可以使用主机名进行连接,也可以使用IP地址进行连接,SQL Server Express一般安装在本机,因此其IP地址为本机地址或127.0.0.1

使用IP地址进行连接时,需在SQL Server Configuration Manager中开启TCP/IP连接的支持,如图10-18所示。

10-18  查询结果

改变启用TCP/IP连接状态后需重启SQL Server Express服务才能继续使用。

连接后,可以使用如下的字符串表示本机的数据库连接。

connectionString = @"Data Source=127.0.0.1\SQLEXPRESS;Initial Catalog=Test; Integrated Security=True;Pooling=False";

在下一小节中演示如何建立一个SQL Server连接。

10.2.3  创建SQL Server连接

本小节演示如何使用SqlConnnection类建立一个SQL Server连接,具体实例如下。

1.目的说明

创建一个Windows控制台应用程序,演示如何连接至数据库。

2.实现步骤

1)创建一个名为DBConnect的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace DBConnect

{

    class Program

    {

        static void Main(string[] args)

        {

            SqlConnection s = new SqlConnection();

 

            string connectString = @"Data Source=127.0.0.1\SQLEXPRESS;Initial

Catalog=Test;Integrated Security=True;Pooling=False";

            s.ConnectionString = connectString;

 

            try

            {

                s.Open();

 

                Console.WriteLine(s.ServerVersion);

                Console.WriteLine(s.Database);

                Console.WriteLine(s.State);

                

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

10-19  运行结果

 

            }

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图10-19所示。

4.代码分析

代码中SqlConnection类的Open方法开启了到数据库的连接。结果的输出中给出了数据库服务器的版本,数据库的名称Test,和数据库的当前状态“Open”。

10.2.4  断开SQL Server连接

数据库是一种消耗比较严重的资源,如果每次开启连接都不及时关闭的话很容易导致数据库连接数超出数据库的范围。因此必须及时关闭数据库连接。下面介绍一个实例,演示如何关闭数据库的连接。

1.目的说明

创建一个Windows控制台应用程序,演示如何关闭数据库连接。

2.实现步骤

1)创建一个名为DBClose的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace DBClose

{

    class Program

    {

        static void Main(string[] args)

        {

            SqlConnection s = new SqlConnection();

 

            string connectString = @"Data Source=127.0.0.1\SQLEXPRESS;Initial

Catalog=Test;Integrated Security=True;Pooling=False";

            s.ConnectionString = connectString;

 

            try

            {

                s.Open();

 

                Console.WriteLine(s.ServerVersion);

                Console.WriteLine(s.Database);

                Console.WriteLine(s.State);

 

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            try

            {

                s.Close();

 

                Console.WriteLine("数据库已关闭!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

        }

    }

}

10-20  运行结果

 

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图10-20所示。

4.代码分析

代码中SqlConnection类的Open方法开启了到数据库的连接。最后使用了Close方法关闭了数据库连接。

10.2.5  管理其他数据源连接

1Access

通常使用ADO.NET连接Access数据库,使用OleDb的方法。常见连接字符串有如下几种,共读者参考。

·    OleDbConnection conn = new OleDbConnection( @"Provider = Microsoft.Jet.OLEDB. 4.0; Data Source = C:\my.mdb");

·    OleDbConnection conn = new OleDbConnection( @"Provider = Microsoft.Jet.OLEDB. 4.0; Password =; User ID = Admin;Data Source = my.mdb;");

Provider = Microsoft.Jet.OLEDB.4.0表示数据访问的提供者为Microsoft.Jet.OLEDB.4.0,这是专门用于访问Access数据库的数据提供程序。

2SQL Server

访问SQL Server数据库通常使用SqlConnection,常见的数据库连接字符串有以下几种。

·    "Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"

·    "Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;Trusted_Connection=False"

·    "Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"

·    "Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog= pubs;User ID=sa;Password=asdasd;"

3MySQL

MySQL有两种访问方式,一种是使用OleDbConnection,另外如果安装了MySQL提供的连接程序,则还可以使用MySqlConnection。分别如下。

·    "Provider=MySQLProv;Data Source=mydb;User Id=UserName;Password=asdasd;"

·    "Data Source=server;Database=mydb;User ID=username;Password=pwd;Command

Logging=false"

连接字符串中分别说明了连接的用户名,密码等,使用过该数据库的读者应该非常容易理解。

4Oracle

Oracle通常使用OracleConnection进行访问,常见的数据库连接字符串有以下几种。

·    "Data Source=MyOracleDB;Integrated Security=yes;"

·    "Data Source=MyOracleDB;User Id=username;Password=passwd;Integrated Security=no;"

第二种连接字符串中分别说明了连接的用户名,密码等,使用过Oracle的读者应该对此并不陌生。

5.其他数据库

其他数据库如果未提供相应的连接程序,则可以使用OleDbConnection,或者配置好ODBC连接后,使用OdbcConnection。具体方法根据数据库的不同而不同,需要读者自行查看相应的数据库手册。