[置顶] 任务一 基本的数据库连接——以类为单位的编程思想
【知识点】
Ø 基本操作
Ø 以类为单位的编程
Ø 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=.\\SQLEXPRESS;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中的数据和方法了。
四、学编程,就是一个不断认识新类、了解、熟悉类的过程。
编程就是用计算机语言写文章,这和我们学习英语,用英语写文章是一样的。学英语,最重要的是词汇量,你是掌握了几千、一万、还是几万词汇,往往就可以衡量出你的英语水平,编程也是这样的,掌握了多少个类,最能说明你的编程水平,有一点需要说明的是,学编程,不需要你掌握成千上万个类,几百个,掌握好的话,就相当不错了...
学编程还有一点和学英语是一样的,那,就是在开始的时候不要过于纽结于语法。别说英语,就是我们天天用的汉语,如果考考你语法的话,相信也不会有多少人及格的。如果一开始就钻牛角尖,把精力放在语法上,会严重打击你的积极性的。
五、以类为单位的编程,已经相当的傻瓜化了……
版权所有©2012,西园工作室.欢迎转载,转载请注明出处.源代码:QQ群共享13033480(电子商务系统源代码)
posted on 2012-11-23 06:59 WestGarden 阅读(222) 评论(0) 编辑 收藏 举报