访问sql server2014数据库

以前编写有关链接数据库,已经实现增删改查功能都比较繁琐和冗长。本篇文章使用了比较简单明了de方式,实现这些功能

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;//第一步:引用与sql相关的命名空间
using System.Data;//引用表的命名空间
public class SqlHelper
{
    public static string connstr = "server=.;uid=sa;pwd=123;database=Blog";//公共的静态的  连接字符串
    /// <summary>
    /// 功能:数据库连接已经执行sql语句
    /// </summary>
    /// <param name="cmdText">
    /// sql语句
    /// </param>
    /// <param name="pms">
    /// 一个可变数组。意味着你可以传入一个或多个参数进去,有可伸缩性
    /// </param>
    /// <returns>
    /// 返回结果大于0则执行成功
    /// </returns>
    public static int ExecuteScalar(string cmdText, params SqlParameter[] pms)
    {
        //params:不限长度的数组
        //第一步:创建数据库对象连接
        SqlConnection conn = new SqlConnection(connstr);
        //第二步:打开数据库

        conn.Open();
        //第三步:创建数据库命令对象和数据库查询语句
        SqlCommand cmd = new SqlCommand(cmdText, conn);
        //第四步:创建参数对象
        if (pms != null)
        {

            foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
            {
                if (item != null)
                {
                    cmd.Parameters.Add(item);
                }
            }
        }
        //第五步:返回结果
        int i = Convert.ToInt32(cmd.ExecuteScalar());
        //第六步:关闭数据库
        conn.Close();
        //第六步:把最终的结果返回到外面去
        return i;
    }
    /// <summary>
    /// 检验数据库里面有没有这个qq账号
    /// </summary>
    /// <param name="cmdText"></param>
    /// <returns></returns>
    public static bool acountexist(string cmdText, params SqlParameter[] pms)
    {
        SqlConnection conn = new SqlConnection(connstr);
        conn.Open();
        SqlCommand cmd = new SqlCommand(cmdText, conn);



        if (pms != null)
        {


            foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
            {
                if (item != null)
                {
                    cmd.Parameters.Add(item);
                }
            }
        }
       
        int i = Convert.ToInt32(cmd.ExecuteScalar());
      
        conn.Close();
        
        if (i > 0)
            return true;
        else
        {
            return false;
        }
    }
    
    //实现增删改查功能
    public static int ExecuteNonQuery(string cmdText, params SqlParameter[] pms)
    {
        //params:不限长度的数组
        //第一步:创建数据库对象连接
        SqlConnection conn = new SqlConnection(connstr);
        //第二步:打开数据库
        conn.Open();
        //第三步:创建数据库命令对象和数据库查询语句
        SqlCommand cmd = new SqlCommand(cmdText, conn);
        //第四步:创建参数对象
        //cmd.Parameters.Add(pms);//如果我们在这里直接放入pms数组,那么cmd添加进去的都是SqlParameter,而不是具体的参数。


        //  int[] ii = new int[5] { 1,2,3,4,5 };
        if (pms != null)
        {

            foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
            {
                if (item != null)
                {
                    cmd.Parameters.Add(item);
                }
            }
        }
        //第五步:返回结果
        int i = Convert.ToInt32(cmd.ExecuteNonQuery());
        //第六步:关闭数据库
        conn.Close();
        //第六步:把最终的结果返回到外面去
        return i;
    }
    //查询数据返回到一张表
    public static DataTable GetTable(string cmdText, params SqlParameter[] pms)
    {
        //params:不限长度的数组
        //第一步:创建数据库对象连接
        SqlConnection conn = new SqlConnection(connstr);
        //第二步:打开数据库
        conn.Open();
        //第三步:创建数据库命令对象和数据库查询语句
        SqlCommand cmd = new SqlCommand(cmdText, conn);
        //第四步:创建参数对象
        //cmd.Parameters.Add(pms);//如果我们在这里直接放入pms数组,那么cmd添加进去的都是SqlParameter,而不是具体的参数。


        //  int[] ii = new int[5] { 1,2,3,4,5 };
        if (pms != null)
        {

            //for (int i = 0; i <pms.Length; i++)
            //{
            //    if (pms[i]!=null)
            //    {
            //        cmd.Parameters.Add(pms[i]); 
            //    }

            //}
            foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
            {
                if (item != null)
                {
                    cmd.Parameters.Add(item);
                }
            }
        }
        //5. SqlDataAdapter是.net中用于存放数组库里面取出来的数   相当于我们现实生活中的容器
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        //6.去创建一个适配器 用来接受容器的
        DataSet ds = new DataSet();
        sda.Fill(ds, "aa");
        conn.Close();
        DataTable dt = ds.Tables["aa"];
        return dt;
    }

    public static SqlDataReader GetReader(string cmdText, params SqlParameter[] pms)
    {
        SqlConnection conn = new SqlConnection(connstr);
        //第二步:打开数据库
        conn.Open();
        //第三步:创建数据库命令对象和数据库查询语句
        SqlCommand cmd = new SqlCommand(cmdText, conn);
        //第四步:创建参数对象
        //cmd.Parameters.Add(pms);//如果我们在这里直接放入pms数组,那么cmd添加进去的都是SqlParameter,而不是具体的参数。


        //  int[] ii = new int[5] { 1,2,3,4,5 };
        if (pms != null)
        {

            //for (int i = 0; i <pms.Length; i++)
            //{
            //    if (pms[i]!=null)
            //    {
            //        cmd.Parameters.Add(pms[i]); 
            //    }

            //}
            foreach (SqlParameter item in pms)//第一个参数:你的数据类型  //第二个参数是值  //第三个参数:in   在什么什么里面   //第四个参数   数组的名称
            {
                if (item != null)
                {
                    cmd.Parameters.Add(item);
                }
            }
        }
        SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//把数据取出来以游标的形式放入sdr
        return sdr;


    }
   

}

不知道大家有没有注意到,这里面的函数反复使用了一个叫parmas的关键字。这个关键字表明后面使用的数组是一个可变的。即此处输入一个参数也行,两个参数也可以,等等。举例说明如下:

 protected void btnReset_Click(object sender, EventArgs e)
        {
            string cmd = "select COUNT(0)  from UserInfo where UserQQ=@a";
            SqlParameter pms = new SqlParameter("@a", txtUserQQ.Text);
            if (SqlHelper.acountexist(cmd, pms))
            {

                string cmdReset = "update  UserInfo set UserPwd='111' where UserQQ=@a";
                SqlParameter pms1 = new SqlParameter("@a", txtUserQQ.Text);
                if (SqlHelper.ExecuteNonQuery(cmdReset, pms1) > 0) {
                    Response.Write("密码已经重置!");
                }
                else
                {
                    Response.Write("密码重置失败!");
                }

            }
            else
            {
                Response.Write("没有该账号!请注册...");
            }
        }

当然也可以传两个以上的参数

protected void Button2_Click(object sender, EventArgs e)
        {
            string cmd = "select COUNT(0)  from UserInfo where UserQQ=@a and UserPwd=@b";
            SqlParameter pms = new SqlParameter("@a", txtUserQQ.Text);
            SqlParameter pms2 = new SqlParameter("@b", txtUserPwd.Text);
            if (SqlHelper.ExecuteScalar(cmd, pms, pms2) > 0)
            {
                Response.Write("登陆成功!");
                
            }
            else
            {
                Response.Write("账号或密码有误,请重新输入!");
            }
        }
        
        
        
        
          protected void Button1_Click(object sender, EventArgs e)
        {
            string userQQ = string.Empty;
            //系统生成一个QQ号
            while (true)
            {
                Random rm = new Random();
                userQQ = rm.Next(1000, 9999).ToString();
                userQQ += rm.Next(1000, 9999).ToString();
                string cmd = "select COUNT(0)  from UserInfo where UserQQ=@a";
                SqlParameter pms = new SqlParameter("@a", userQQ);
                if (SqlHelper.acountexist(cmd, pms))
                {


                }
                else
                {
                    break;
                }
            }






            string cmd1 = "insert into UserInfo(UserName,UserPwd,UserQQ,UserRealName,UserRealmark,UserSex) values(@username,@userpwd,@userqq,@userrealname,@userrealmark,@usersex);";
            string sex = string.Empty;
            if (rbtnMan.Checked == true)
            {
                sex = "男";
            }
            else
            {
                sex = "女";
            }
            SqlParameter[] pms1 = new SqlParameter[6]
            {
                new SqlParameter("@username",txtUserName.Text),
                new SqlParameter("@userpwd",txtQQpwd.Text),
                 new SqlParameter("@userqq",userQQ),
                  new SqlParameter("@userrealname",txtRealUserName.Text),
                  new SqlParameter("@userrealmark",txtbeizhu.Text),
                   new SqlParameter("@usersex",sex)
            };
            if (SqlHelper.ExecuteNonQuery(cmd1, pms1) > 0)
            {

                Response.Write("注册成功!" + "QQ账号为:" + userQQ);
            }
            else
            {
                Response.Write("注册失败!");
            }

        }

值得一提de就能使参数可变传递的就是这样一个关键字params。使用它我们可以使函数功能更加丰富灵活

你可能感兴趣的:(params)