您的位置:首页 > 数据库

任务一 基本的数据库连接

2012-11-23 11:04 260 查看
【知识点】
Ø 基本操作
Ø 以类为单位的编程
Ø ADO.NET的核心类

【操作步骤】

一、附加数据库NetShop;
二、文件→新建项目→其它项目类型→Visual Studio解决方案→空白解决方案,选择项目类型及模板;
三、选择.Net框架.NET Framework 2.0、项目所建位置D:\WestGarden、名称NetShop,如图示:



四、单击“确定”按钮。
五、右击“解决方案NetShop”→添加→新建网站→ASP.NET网站,选择网站位置D:\WestGarden\NetShop\Web、网站使用的语言Visual
C#,如图示:



六、单击“确定”按钮;
七、打开Default.aspx.cs文件,添加如下代码:

using System;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string connectionString = "Server=.;Database=NetShop;Trusted_Connection=SSPI";
string cmdText = "SELECT * FROM Category";

SqlConnection conn = new SqlConnection();
conn.ConnectionString = connectionString;

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmdText;

conn.Open();

SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
Response.Write(dr["Name"] + "<br />");
}

dr.Close();

conn.Close();
}
}


八、右击Default.aspx在浏览器中查看运行结果。

【说明】

首先,我们必须说明,高级编程,都是以类为单位的。在这段代码中,主要使用了一个Response类以及ADO.NET的三个核心类SqlConnection、SqlCommand和SqlDataReader。
类是什么?一般来说,类是具有一定功能的程序段,通俗一点说,它是干活的,干某一类活的,它干活的时候,已经和人差不多了。
让我们设想一下这样一个过程,打开数据库NetShop,执行查询命令SELECT * FROM Category,把查询到的结果中所有的Name写到黑板上去。
我们找四个人来完成这个任务吧:
第一个人叫SqlConnection,他的任务是打开、关闭数据库。要打开数据库,我必须要告诉他这么几个信息:哪台机器、哪个数据库、以Windows身份验证方式登录还是以SQLServer身份验证方式登录,如果是以SQL
Server身份验证方式登录,我还要告诉他用户名和密码,如图所示:





他打开数据库使用的信息是:
1. 本地机器:.;
2. Windows身份验证方式:Trusted_Connection=SSPI;
3. 连接到数据库NetShop:Database=NetShop;
这些信息,我可以写在标记为connectionString的小纸条上,再交给他吗?
string connectionString ="Server=.;Database=NetShop;Trusted_Connection=SSPI";
注意:大家其实都不习惯在打开数据库时指定连接到哪个数据库,但,如果你打开时不指定,一会儿执行SQL命令的时候,还是要指定的。
第二个人叫SqlCommand,他的任务是执行SQL命令。他上来的时候,我首先要告诉他,针对哪个连接执行,这个必须要告诉他,因为虽然我们很少同时打开几个数据库,但事实上前面的SqlConnection童鞋是完全可以打开几个数据库连接的,下图就是我在本机上同时打开.和.\SQLEXPRESS两个数据库并执行SQL命令的结果:





我还需要告诉他执行的是什么命令,比方说,是个存储过程,还是简单的SQL语句。如果是存储过程,那,我得告诉他存储过程的名称;如果是SQL语句,我需要告诉他命令的内容,我告诉他的这三个信息,可以写成这样吗?
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmdText;
SqlCommand执行完命令,在结果窗口中会出现类似上面两个图中的结果,我们现在,再找两个人吧,其中一个人负责一行一行的读表格中的数据,另一个人负责把读出来的数据写到“黑板”上,对了,这两个人,一个叫SqlDataReader,一个叫Response。
上面的过程,我含糊了两个概念,类、类变量。
很多人都把conn、cmd、dr等就类的实例,叫对象,我更喜欢把它们叫做类变量。
变量的实质是存储单元或者存储区域,这个,我就不过多的解释了,我们现在来看看SqlConnection conn=new SqlConnection();和int a=1;有什么区别?
Int a=1;的实质,是开辟一个两个字节的存储单元,把用0、1代码表示的16位补码形式的1存放进去,把这个存储单元起个名字叫a,以后,随时可以通过这个名字来访问里面的数据,取出或者存放;
SqlConnection conn=new SqlConnection();呢?是不是也开辟了一个存储区域,把用0、1表示的编译后的,包括字段、属性、方法的类存放进去呢?conn事实上是这个存储区域的地址,类似于指针变量或者句柄,通过这个地址来访问存储区域中的字段、属性,调用里面的方法呢?
那么,把类看成是一种数据类型,比结构体多了个函数代码的数据类型,有什么不合适的吗?
这时,这句SqlDataReader dr =cmd.ExecuteReader();也就更好解释了,dr是个SqlDataReader类的类指针变量,cmd执行ExecuteReader()方法,获得的是指向
结果SqlDataReader类的地址,并把这个地址交给了dr,通过这个dr就可以访问这个结果SqlDataReader中的数据和方法了。
以类为单位的编程,已经相当的傻瓜化了……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: