学习笔记(三)——数据库命令的应用

学习笔记(三)——数据库命令的应用

一、存储过程

(一)基本概念

 存储过程就是固化SQL数据库系统内部的SQL语句,这样做的好处是可以提高执行效率,提高数据库的安全性,减少网络流量。

(二)创建存储过程

1、基本语法

CREATE   PROCEDURE  procedure_name

 { @parameter data_type}

As

 --具体语句

Go

 --可加可不加,Go的意思是另起一页,若下边不写语句可以不加

2、在存储过程usp_insertUser中插入用户

GO

CREATE PROCEDURE usp_insertUser

(@No VARCHAR(10)

,@Password VARCHAR(20))

AS

BEGIN

INSERT tb_User

(No,Password)

VALUES

(@No

,HASHBYTES('MD5',@Password));

END

(三)调用存储过程

 

string strsql = "Data Source=localhost;Initial Catalog=######;Integrated Security=True";//数据库链接字符串 

string sql = " usp_insertUser ";//要调用的存储过程名 

SqlConnection conn = new SqlConnection(strsql);//SQL数据库连接对象,以数据库链接字符串为参数 

SqlCommand comStr = new SqlCommand(sql, conn);//SQL语句执行对象,第一个参数是要执行的语句,第二个是数据库连接对象 

comStr.CommandType = CommandType.StoredProcedure;//因为要使用的是存储过程,所以设置执行类型为存储过程 

            //依次设定存储过程的参数 

 comStr.Parameters.Add("@Param1", SqlDbType.Text).Value = "####";

 conn.Open();//打开数据库连接 

 MessageBox.Show(comStr.ExecuteNonQuery().ToString());//执行存储过程 

SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(comStr);

 DataTable DT=new DataTable ();

 SqlDataAdapter1.Fill(DT);

 dataGridView1.DataSource = DT;

 conn.Close();//关闭连接

 

二、面向对象_类

(一)类的定义

 1、基本语法

 <访问修饰符>class<类名>

{ 类成员(字段、属性、方法、事件)}

2、类的修饰符

Public

公有访问,不受任何限制

Private

私有访问,只限于本类成员访问,子类、实例都不能访问

Protected

保护访问。只限于本类和子类访问,实例不能访问

Internal

内部访问。只限于本项目内访问,其他不能访问

Protected internal

内部保护访问。只限于本项目或是子类访问,其他不能访问

(二)类的实例化

1、基本语法

<类名>  <实例名>= new <类名>

{ 构造函数的参数}

 

(三)构造函数

又称构造方法

<访问修饰符> 返回值类型  方法名 (参数列表)

{

方法体

}

【例】

 

 

 

 

 

附:课程示例

在登录控件下的代码:

this.User.No = this.txb_UserNo.Text.Trim();                                 

//将文本框的文本清除首尾的空格后,赋予用户的相应属性;

            this.User.Password = this.txb_Password.Text.Trim();

            this.User.LogIn();                                                             //调用用户的方法登录,并将各文本框的文本作为参数;

            MessageBox.Show(this.User.Message);                                             //在消息框中显示登录消息;

            if (!this.User.HasLoggedIn)                                                    //若用户未完成登录,即登录失败;

            {

                this.txb_Password.Focus();                                                 //密码文本框获得焦点;

                this.txb_Password.SelectAll();                                             //密码文本框内所有文本被选中;

            }

 

我们仅需用这简短的代码就可以完成登录的过程,但是我们还需要编写相关类的代码。

因为引用SQL数据库操作类,一般在进行数据库操作的时候会引入命名空间。所以在编写类的时候,我们需要在页面上方写下如下代码:

 

using System.Data;                                                                                      //包含各类数据对象;

using System.Data.SqlClient;                                                                            //包含访问SQL Server所需的各类对象;

using System.Configuration;                                                                             //包含访问配置文件所需的配置管理器;需事先在本项目的“引用”中添加对System.Configuration的引用;

 

这个时候我们可以编写相关类:

public class User

    {

        /// 公有属性:用户号;

        public string No

        {

            get;

            set;

        }

        /// 公有属性:密码;

        public string Password

        {

            get;

            set;

        }

 

         /// 公有属性:是否完成登录;

        public bool HasLoggedIn

        {

            get;

            set;

        }

        /// 公有属性:消息;

        /// (用于返回验证结果)

        public string Message

        {

            get;

            set;

        }

        /// 公有方法:登录;

        public void LogIn()

        {

            SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接;

            sqlConnection.ConnectionString =

                ConfigurationManager.ConnectionStrings["Sql"].ToString();                               //配置管理器从App.config读取连接字符串;

  SqlCommand sqlCommand = sqlConnection.CreateCommand();   //调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;

 sqlCommand.CommandText = "usp_selectUserCount";     //指定SQL命令的命令文本;命令文本为存储过程名称;(运用到了2.5的知识。)

            sqlCommand.CommandType = CommandType.StoredProcedure;                                       //SQL命令的类型设为存储过程;

            sqlCommand.Parameters.AddWithValue("@No", this.No);                                         //向SQL命令的参数集合添加参数的名称、值;

            sqlCommand.Parameters.AddWithValue("@Password", this.Password);

            sqlConnection.Open();                                                                       //打开SQL连接;

            int rowCount = (int)sqlCommand.ExecuteScalar();                                             //调用SQL命令的方法ExecuteScalar来执行命令,并接受单个结果(即标量);

            sqlConnection.Close();                                                                      //关闭SQL连接;

            if (rowCount == 1)                                                                          //若查得所输用户号相应的1行记录;

            {

                this.HasLoggedIn = true;                                                                //完成登录;

                this.Message = "登录成功。";                                                            //给出正确提示;

            }

            else                                                                                        //否则;

            {

                this.HasLoggedIn = false;                                                               //未完成登录;

                this.Message = "用户号/密码有误,请重新输入!";                                         //给出错误提示;

            }

        }

        }

 

转载于:https://www.cnblogs.com/Angular-JS/p/7629088.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值