一、上文回顾

  在本系列的第一篇[MrYoung教程:易学之道]1ADONET基础及登录模块的实现 1-1中我们首先了解了关系型数据库的概念,然后学习了如何使用企业管理器建立数据库表和添加数据,最后了解了基础的SQL语句:查询,增加,修改,删除的用法,在本节我们将详细讲解如何去实现一个登陆窗体,从而开始入门ADO.NET编程

二、System.Data.SqlClient 命名空间

  System.Data.SqlClient 命名空间是 SQL Server 的 .NET Framework 数据提供程序。

  SQL Server 的 .NET Framework 数据提供程序描述了一个类集合,这个类集合用于访问托管空间中的 SQL Server 数据库。使用 SqlDataAdapter 可以填充驻留在内存中的 DataSet,该数据集可用于查询和更新数据库。

  主要类如下:

  2.1 在操作数据库之前,必须引用System.Data.SqlClient。这个类集合用于访问托管空间中的 SQL Server 数据库。

  2.2 SqlConnection类,表示SQL Server 数据库的一个打开的连接。

  2.3 SqlCommand类,表示要对SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。

  2.4 SqlDataAdapter类,表示用于填充 DataSet和更新 SQL Server 数据库的一组数据命令和一个数据库连接。

  2.5 SqlDataReader类,提供一种从 SQL Server 数据库读取行的只进流的方式。

三、SqlConnection

  在任何数据库操作之前,均需要建立一个数据库连接,而SqlConnection表示 SQL Server 数据库的一个打开的连接.

  3.1 连接字符串:packet size=4096;data source=数据地址;persist security info=True;initial catalog=数据库名;user id=用户名;pwd=用户密码,如  

 

             string sqlcon = "packet size=4096;data source=127.0.0.1;persist security info=True;initial catalog=Db_Example;user id=sa";
 

 

  3.2 SqlConnection 构造函数 (String 连接字符串),如果给定包含连接字符串的字符串,则初始化 SqlConnection 类的新实例



            string sqlcon = "packet size=4096;data source=127.0.0.1;persist security info=True;initial catalog=Db_Example;user id=sa";
            SqlConnection myCon = new SqlConnection(sqlcon);

 

  3.3 SqlConnection.Open 方法,打开数据库连接。

  3.4 SqlConnection.Close 方法,关闭数据库连接。

  3.5 SqlConnection.Dispose 方法,释放资源。

四、SqlCommand

  表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承。

  4.1 SqlCommand 构造函数 (String 查询文本, SqlConnection 一个到数据库的实例连接)。

SqlCommand sqlcom = new SqlCommand("insert into tb_user values('Mryoung','123456')", sqlcon);

  4.2 SqlCommand.ExecuteNonQuery 方法,执行 Transact-SQL INSERT、DELETE、UPDATE 及 SET 语句等命令

  4.3 SqlCommand.ExecuteReader 方法 (CommandBehavior),返回一个SqlDataReader对象。如果创建了 SqlDataReader并将 CommandBehavior设置为 CloseConnection,则关闭 SqlDataReader会自动关闭此连接。

            SqlConnection sqlcon = this.getcon();
            SqlCommand sqlcom = new SqlCommand(str_sql, sqlcon);
            sqlcon.Open();
            SqlDataReader sqlread = sqlcom.ExecuteReader(CommandBehavior.CloseConnection);

  4.4 SqlCommand.Dispose方法,释放资源。

  4.5 SqlCommand.Close方法,关闭连接。

五、SqlDataReader

  提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。他使得我们可以得到查询的结果。

  5.1 由SqlCommand.ExecuteReader 方法创建。

  5.2 SqlDataReader.Read 方法,使 SqlDataReader前进到下一条记录,因为SqlDataReader的默认位置在第一条记录前面。因此,必须调用 Read 来开始访问任何数据。如果存在多个行,则为 true;否则为 false。

  5.3 SqlDataReader.HasRows 属性,获取一个值,该值指示SqlDataReader是否包含一行或多行。如果 SqlDataReader包含一行或多行,则为 true;否则为 false。

六、C#操作数据库一般流程

 
 
 

七、数据查询流程

八、登陆窗体设计

  打开VS2008,新建项目LoginDemo

  添加一个WINDOWS窗体,名为frm_Login,并拖入如下控件:

九、登陆流程

十、代码编写

  10.1 添加一个数据库操作类,名为BaseOperate

  10.2 getcon方法,返回数据库连接对象

/// <summary>
        /// 建立数据库连接
        /// </summary>
        /// <returns>数据库连接对象</returns>
        public SqlConnection getcon()
        {
            string sqlcon = "packet size=4096;data source=127.0.0.1;persist security info=True;initial catalog=Db_Example;user id=sa";
            SqlConnection myCon = new SqlConnection(sqlcon);
            return myCon;
        }

  

  10.3 getcom方法,执行执行SQLCOMMAND命令

        /// <summary>
        /// 执行SQLCOMMAND命令
        /// </summary>
        /// <param name="str_sql">要执行的SQL语句</param>
        public void getcom(string str_sql)
        {
            SqlConnection sqlcon = this.getcon();
            sqlcon.Open();
            SqlCommand sqlcom = new SqlCommand(str_sql, sqlcon);
            sqlcom.ExecuteNonQuery();
            sqlcom.Dispose();
            sqlcon.Close();
            sqlcon.Dispose();
        }

  10.4 getread方法,返回SQLDATAREADER对象

        /// <summary>
        /// 创建SQLDATAREADER对象
        /// </summary>
        /// <param name="str_sql">要执行的SQL语句</param>
        /// <returns>返回SQLDATAREADER对象</returns>
        public SqlDataReader getread(string str_sql)
        {
            SqlConnection sqlcon = this.getcon();
            SqlCommand sqlcom = new SqlCommand(str_sql, sqlcon);
            sqlcon.Open();
            SqlDataReader sqlread = sqlcom.ExecuteReader(CommandBehavior.CloseConnection);
            return sqlread;

        }

  10.5 frmLogin窗体中定义字段:

        /// <summary>
        /// 用户名
        /// </summary>
        public static string M_str_name;
        /// <summary>
        /// 用户密码
        /// </summary>
        public static string M_str_password;
        /// <summary>
        /// 数据库操作类
        /// </summary>
        BaseClass.BaseOperate bs = new LoginDemo.BaseClass.BaseOperate();

  10.6 登陆按钮点击事件

       private void btnLogin_Click(object sender, EventArgs e)
        {
            //要执行的SQL语句
            string sql = "select * from tb_user where username='"+txtUserName.Text+"' and userpassword='"+txtUserPassword.Text+"'";
            //调用baseoperate的getread方法实例化SqlDataReader对象
            SqlDataReader sqlread = bs.getread(sql);
            //SqlDataReader在第一次读取之前始终指向第一条记录之前,所以需要先读取一次以指向第一条数据
            sqlread.Read();
            //HasRows属性表示是否包含一行或多行数据,是则为True
            if (sqlread.HasRows)
            {
                //数据库中有此记录说明用户输入了正确的用户名和密码
                
                M_str_name = txtUserName.Text;
                M_str_password = txtUserPassword.Text;
                //实例化主界面
                frmMain fmain = new frmMain();
                //隐藏登陆界面
                this.Hide();
                //想用户显示主界面
                fmain.Show();
            }
            else
            {
                //数据库中无用户输入的的用户名密码或密码不正确则弹出对话框提示用户
                MessageBox.Show("用户名或密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                //清除文本框内容
                txtUserPassword.Text = "";
                txtUserName.Text = "";
                //设置用户名文本框为焦点
                txtUserName.Focus();
            }
            //注意需要关闭对象,释放资源
            sqlread.Close();
         
        }

十一、总结

  这里我们介绍了SQL SERVER操作的相关几个类和主要的方法,并以登录窗体的编写详细谈论了如何去使用它们。

十二、下集预告

  在下一集中我们将通过编写一个数据展现窗体来继续学习SQL操作的其他方法。

十三、其他信息

  本文章内容对应视频教程的第一讲[MrYoung教程:易学之道]1ADONET基础及登录模块的实现,在文首我已经给出了优酷的链接,建议家先观看视频,然后再来看本文会更加清晰,若有不明白的的地方,当然你也可以给我留言或加入QQ群13615607交流,在群里有本文的视频教程,PPT,源码供下载。

  本系列课程是我第一次录制视频,如有讲的不好或错误的地方还请多多指出,我会及时修改。

  帮助QQ群:13615607,请注明来自博客园

  本文配套视频 优酷专辑地址:http://www.youku.com/playlist_show/id_6080910.html

            本集地址:http://v.youku.com/v_playlist/f6080910o1p1.html

作者: [MrYoung] 发表于 2011-05-18 21:59 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"