发布日期:2013-03-12 15:53 来源: 标签: ASP.net 对象
 

Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类。

Connection对象有两个重要属性:

ConnectionString:表示用于打开 SQL Server 数据库的字符串;

State:表示 Connection 的状态,有Closed和Open两种状态。

Connection对象有两个重要方法:

Open()方法:指示打开数据库;

Close()方法:指示关闭数据库。

在实际开发中很多朋友经常询问数据库连接字符串该怎么写,其实有一个很简单的技巧,我们可以在Visual Studio 2005工具箱中找到数据分组,如下图:


 
打开或新建一个asp.net页面,在设计视图下双击SqlDataSource控件就会添加一个SqlDataSource到当前页面,如下图:


 
当我们用鼠标单击SqlDataSouce控件时会出现一个小三角箭头,如上图所示,当我们点击这个三角箭头时会出现如下图所示的界面:


 
点击“配置数据源”时会出现下面的界面:


 
点“新建连接”后出现如下界面:


 
在这个界面中默认是连接到SQL Server数据库,其实我们还可以利用这个向导连接到其它数据库的,我们点击“数据源”旁边的“更改”按钮出现如下图所示的界面:


 
从上面的界面中我们可以看出可以利用这个连接向导配置连接到Access数据库文件、ODBC数据源、SQL Server数据库、SQL Server手机版数据库、SQL Server数据库文件、Oracle数据库文件及其它数据库。

在这里我们选择Microsoft SQL Server选项,连接到SQL Server数据库。如果我们在局域网中,我们可以点击“添加连接”界面中的刷新按钮来查看局域网中有哪些SQL Server数据库可以连接。连接到数据库可以用下面的方式:

(1)如果要连接的数据库服务器与开发者的机器在同一个局域网里,可以使用局域网IP地址或者局域网中的电脑主机名;

(2)如果要连接的数据库服务器与开发者的机器不在同一个局域网内,那么就要求数据库服务器必须有一个公网IP,我们可以使用公网IP来连接,如果数据库服务器还有互联网域名,那么用互联网域名也是可以的。

(3)如果要连接的数据库服务器与开发者所使用的机器是同一台机器,那么可以使用以下几种方式之一:”(local)”或者”.”或者”127.0.0.1”。

需要注意的是,如果在一台机器上运行者同一种数据库的不同版本,比如说在”zhoufoxcn”这台主机上同时运行着SQL 2000、SQL 2005和SQL Express三种版本,并且它们所使用的Windows服务名分别为”SQL2000”、”SQL2005”和”SQLExpress”,那么我们要连接到SQL 2000这个数据库上所使用的服务器名就应该填写”zhoufoxcn/SQL2000”这种“主机名/实例名”的方式或者“主机IP/实例名”,这种情况在同时安装了Visual Studio 2005和SQL 2005的朋友那里很常见,因为SQL Express是针对学生的功能有限的免费版本,这个版本的数据库在安装Visual Studio 2005时默认是一同安装的。
在上面的“添加连接”窗口,我们分别填写如下信息:


 
在上面我们连接的是本机上的数据库,所使用的数据库帐号是sa,访问的数据库是AspNetStudy,创建这个数据的SQL脚本如下:

01.IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'AspNetStudy')
02. DROP DATABASE [AspNetStudy]
03.GO
04.CREATE DATABASE [AspNetStudy]  ON (NAME = N'AspNetStudy_Data', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/AspNetStudy_Data.MDF' , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'AspNetStudy_Log', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/AspNetStudy_Log.LDF' , SIZE = 1, FILEGROWTH = 10%)
05. COLLATE Chinese_PRC_CI_AS
06.GO
07.use [AspNetStudy]
08.GO
09.if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserInfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
10.drop table [dbo].[UserInfo]
11.GO
12.CREATE TABLE [dbo].[UserInfo] (
13. [UserID] [int] IDENTITY (1, 1) NOT NULL ,
14. [UserName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
15. [RealName] [nvarchar] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
16. [Age] [tinyint] NOT NULL ,
17. [Sex] [bit] NOT NULL ,
18. [Mobile] [char] (11) COLLATE Chinese_PRC_CI_AS NULL ,
19. [Phone] [char] (11) COLLATE Chinese_PRC_CI_AS NULL ,
20. [Email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
21.) ON [PRIMARY]
22.GO
23. CREATE  UNIQUE  INDEX [IX_UserName] ON [dbo].[UserInfo]([UserName]) WITH  IGNORE_DUP_KEY  ON [PRIMARY]
24.GO
25.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('zhangfei','张飞',36,'13455663420','03517890360','zhangfei@msn.com',1);
26.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('guanyu','关羽',38,'13455663421','03517890361','guanyu@163.com',1);
27.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('liubei','刘备',42,'13455663422','03517890362','liubei@163.net',1);
28.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('zhougong','周公',29,'13455663423','03517890363','zhoufoxcn@tom.com',1);
29.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('zhaoyun','赵云',32,'13455663424','03517890364','zhaoyun@sohu.com',1);
30.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('huanggai','黄盖',50,'13455663425','03517890365','huanggai@live.com',1);
31.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('zhugeliang','诸葛亮',27,'13455663426','03517890366','zhugeliang@hotmail.com',1);
32.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('jiangwei','姜维',22,'13455663427','03517890367','jiangwei@netease.com',1);
33.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('caocao','曹操',48,'13455663428','03517890368','caocao@qq.com',1);
34.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('guojia','郭嘉',32,'13455663429','03517890369','guojia@21cn.com',1);
35.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('sunquan','孙权',33,'13455663430','03517890370','sunquan@gmail.com',1);
36.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('diaochan','貂禅',20,'13455663431','03517890371','diaochan@sina.com.cn',0);
37.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('yangyuhuan','杨玉环',24,'13455663432','03517890372','yangyuhuang@chinaren.com',0);
38.insert into UserInfo([UserName],[RealName],[Age],[Mobile],[Phone],[Email],[Sex])values('wangzhaojun','王昭君',26,'13455663433','03517890373','wangzhaojun@yahoo.com.cn',0);
39.go

我们可以点击一下“测试连接”按钮,如果弹出连接成功的提示消息就表示这个数据库连接是可用的。点击“确定”按钮,回到“配置数据源”界面,这时候点击连接字符串旁边的”+”按钮就可以看到数据库的连接字符串信息,如下图所示:


 
把这个字符串拷贝到我们需要实例化Connection对象的地方,可以作为构造函数的参数实例化一个SqlConnection对象。
由于这个例子前后台代码都比较简单,所以在Visual Studio 2005建立的单页模式网页(代码和页面都在一个页面里),下面是代码:

01.<%@ Page Language="C#" %>
02.<%@ Import Namespace="System.Data.SqlClient" %>
03.<%@ Import Namespace="System.Data" %>
04.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
05.<script runat="server">
06.    protected void Page_Load(object sender, EventArgs e)
07.    {
08.        SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
09.        //注意,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")是将当前时间格式化为类似于2008-10-09 00:00:03的形式的字符串
10.        Response.Write("时间"+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"当前数据库连接状态是:"+connection.State +"<br/>");
11.        connection.Open();
12.        Response.Write("时间" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "当前数据库连接状态是:" + connection.State + "<br/>");
13.        connection.Close();
14.        Response.Write("时间" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "当前数据库连接状态是:" + connection.State + "<br/>");
15.    }
16.</script>
17.<html xmlns="http://www.w3.org/1999/xhtml" >
18.<head runat="server">
19.    <title>无标题页</title>
20.</head>
21.<body>
22.    <form id="form1" runat="server">
23.    <div>
24.         </div>
25.    </form>
26.</body>
27.</html>

以下是运行效果:


 
可见实例化一个Connection对象的时候,被实例化的Connection对象是关闭的,我们需要Open这个Connection对象,执行完毕相关操作之后再关闭这个Connection对象。

 

相关评论

专题信息
    ASP.NET 是一种服务器端脚本技术,可以使(嵌入网页中的)脚本由 Internet 服务器执行。本教材是初学者的福音,十分的基础课程,0基础的都能学会制作自己的网站,非常好的学习教程。想学习ASP.net的爱好者可以从基础知识对象,控件,数据库这里开始吧。