zoukankan      html  css  js  c++  java
  • [置顶] 任务一 基本的数据库连接——以类为单位的编程思想

    【知识点】

    Ø 基本操作

    Ø 以类为单位的编程

    Ø 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的三个核心类SqlConnectionSqlCommandSqlDataReader

    二、类是具有一定功能的程序段,通俗一点说,它是干活的,干某一类活的,它干活的时候,已经和人差不多了。

    让我们设想一下这样一个过程,打开数据库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

    三、类是一种自定义数据类型,而我们通常所说的类的实例、对象则可以看做是这个自定义数据类型的类变量。

    很多人都把conncmddr等叫做类的实例,叫对象,我更喜欢把它们叫做类变量。

    变量的实质是存储单元或者存储区域,这个,我就不过多的解释了,我们现在来看看SqlConnection conn=new SqlConnection();int a=1;有什么区别?

    Int a=1;的实质,是开辟一个两个字节的存储单元,把用01代码表示的16位补码形式的1存放进去,把这个存储单元起个名字叫a,以后,随时可以通过这个名字来访问里面的数据,取出或者存放;

    SqlConnection conn=new SqlConnection();呢?是不是也开辟了一个存储区域,把用01表示的编译后的,包括字段、属性、方法的类存放进去呢?conn事实上是这个存储区域的地址,类似于指针变量或者句柄,通过这个地址来访问存储区域中的字段、属性,调用里面的方法呢?

    那么,把类看成是一种数据类型,比结构体多了个函数代码的数据类型,有什么不合适的吗?

    这时,这句SqlDataReader dr =cmd.ExecuteReader();也就更好解释了,dr是个SqlDataReader类的类指针变量,cmd执行ExecuteReader()方法,获得的是指向

    结果SqlDataReader类的地址,并把这个地址交给了dr,通过这个dr就可以访问这个结果SqlDataReader中的数据和方法了。

    四、学编程,就是一个不断认识新类、了解、熟悉类的过程。

    编程就是用计算机语言写文章,这和我们学习英语,用英语写文章是一样的。学英语,最重要的是词汇量,你是掌握了几千、一万、还是几万词汇,往往就可以衡量出你的英语水平,编程也是这样的,掌握了多少个类,最能说明你的编程水平,有一点需要说明的是,学编程,不需要你掌握成千上万个类,几百个,掌握好的话,就相当不错了...

    学编程还有一点和学英语是一样的,那,就是在开始的时候不要过于纽结于语法。别说英语,就是我们天天用的汉语,如果考考你语法的话,相信也不会有多少人及格的。如果一开始就钻牛角尖,把精力放在语法上,会严重打击你的积极性的。

    五、以类为单位的编程,已经相当的傻瓜化了……

     

    版权所有©2012,西园工作室.欢迎转载,转载请注明出处.源代码:QQ群共享13033480(电子商务系统源代码)

  • 相关阅读:
    CF-1111 (2019/2/7 补)
    CF-1096C Polygon for the Angle
    CF-1100 E Andrew and Taxi
    CF-1099 D. Sum in the tree
    sscanf的使用
    CF-1082(渣渣只做了前三个)
    UVA-10817- Headmaster's Headache(状压DP)
    UVA-1220-Party at Hali-Bula && UVA-1218-Perfect Service(树形DP)
    CF-1072-C. Cram Time(贪心,数学)
    CF-1027-B. Curiosity Has No Limits
  • 原文地址:https://www.cnblogs.com/WestGarden/p/3138314.html
Copyright © 2011-2022 走看看