zoukankan      html  css  js  c++  java
  • ADO知识的运用二(Day 28)

      可能是最近有些沉迷于电视剧了,所以,好多天都没写总结了。我知道这样不好,但又老管不住自己,也许是我自控力太差了吧......呵呵,如果在不写总结,可能以后就会成为习惯了。所以今天要赶紧补上......今天就先写一下前几天所学的几个小程序吧。

    用户登录程序:

    窗体界面:

     数据库信息:

    主要代码:

    首先,要引进命名空间using System.Data.SqlClient;

     private void btnok_Click(object sender, EventArgs e)   //登录按钮的事件
            {
                string user = this.txtname.Text;
                string pwd  = this.txtpwd.Text;
    
                //创建连接字符串
                string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";
    
                //打开连接
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    conn.Open();
    
                    //执行数据库操作 (向SqlCommand的Parameters中添加参数)
                    string sqltext = "select * from info where name=@user and  pwd=@pwd";
                    SqlParameter sp = new SqlParameter("@user", user);   
                    SqlParameter sp1 = new SqlParameter("@pwd", pwd); 
                    using (SqlCommand cmd = new SqlCommand(sqltext, conn))  
                    {
                        cmd.Parameters.Add(sp);
                        cmd.Parameters.Add(sp1);
    
                        DataTable dt = new DataTable();                      //定义一个DateTable类型来存放数据
    
                        using (SqlDataAdapter sda = new SqlDataAdapter(cmd))//创建数据适配器
                        {
                            sda.Fill(dt);                                  //填充数据
                        }
    
                        if (dt.Rows.Count > 0)
                        {
                            MessageBox.Show("登陆成功");
                        }
                        else
                        {
                            MessageBox.Show("登录失败");
                        }
                    }
                    
                }
            }
    
            private void btnclo_Click(object sender, EventArgs e)
            {
                this.txtname.Text= "";
                this.txtpwd.Text = "";
    
            }


    运行结果:

    由于每次在对数据库中的表进行操作时,总要去连接数据库,和调用一些SqlCommand的方法。所以,我们可以把这些定义成一个类SqlHelper(里面的方法为静态方法),在用的时候直接调用就行。例如上面的那个用户登录,我们可以用这种方法写。

    SqlHelper类

    class SqlHelper
     {  
         //连接数据库
        static string constr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";   
    
      
        // SqlCommand对象的主要方法
    
       //ExecuteNonQuery用于执行SQL语句,并返回SQL语句所影响的行数,一般用于执行Insert、Delete、Update等命令
        public static int  ExecuteNonQuery  (string sqltext,params SqlParameter[]parms) 
            {
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    conn.Open();
                    using (SqlCommand comm =new SqlCommand ())
                    {
                        comm.CommandText = sqltext;
                        comm.Connection = conn;
                        comm.Parameters.AddRange(parms);
                        return comm.ExecuteNonQuery();  //返回受影响的行数
                    }
                }
            }
    
    //ExecuteScalre方法用于执行查询语句,但返回的是首行首列,该方法只适用于只有一个结果的查询,如可以在使用Sum,Avg,Max,Min等函数的SQL语句 public static int ExecuteScalre(string sqltext, params SqlParameter[] parms) { using (SqlConnection conn=new SqlConnection (constr)) { conn.Open(); using (SqlCommand comm= new SqlCommand ()) { comm.Connection = conn; comm.CommandText = sqltext; comm.Parameters.AddRange(parms); return (int)comm.ExecuteScalar(); //返回首行首列 } } }
    public static DataTable ExecuteDataTable (string sqltext,params SqlParameter[]parms) { using (SqlConnection conn=new SqlConnection (constr)) { conn.Open(); using (SqlCommand comm=new SqlCommand ()) { comm.Connection = conn; comm.CommandText = sqltext; comm.Parameters.AddRange(parms); DataTable dt = new DataTable(); //创建一个临时容器 using (SqlDataAdapter sda=new SqlDataAdapter(comm)) { sda.Fill(dt); } return dt; } } }
    // ExecuteReader用于执行查询语句,返回的是一个DataReader类型的集合 public static SqlDataReader ExecuteSqlDataReader(string sqltext,params SqlParameter[]parms) { using (SqlConnection conn=new SqlConnection (constr)) { conn.Open(); using (SqlCommand comm=new SqlCommand (sqltext,conn)) { comm.Parameters.AddRange(parms); using (SqlDataReader da= comm.ExecuteReader(CommandBehavior.CloseConnection)) //关闭连接 { return da; } } } }

    在登录btton按钮事件下直接调用

     private void btnlogin_Click(object sender, EventArgs e)
            {
                //首先得到用户输入的用户名和密码
                string name = this.txtname.Text.Trim();
                string pwd = this.txtpwd.Text.Trim();
    
    string sqltext = "select count(*) from student where uname=@uname and upwd=@upwd"; SqlParameter[] parms = { new SqlParameter("@uname",name), new SqlParameter ("upwd",pwd) }; if (SqlHelper.ExecuteScalre(sqltext, parms) > 0) //调用SqlHelper的ExecuteScalre方法 { MessageBox.Show("登陆成功"); } else { MessageBox.Show("登录失败"); } }

    运行结果:

    由于时间的关系,今天先写到这里了,明天总结三层架构。加油!

  • 相关阅读:
    stm32之不定长接收
    3、列表和列表项
    2、FreeRTOS任务相关API函数
    1、FreeRTOS移植
    5、根文件系统原理
    1、c++对c语言的扩展
    4、移植三星官方内核
    3、内核的启动过程
    2、内核的配置和移植
    iOS学习笔记19-地图(一)定位CoreLocation
  • 原文地址:https://www.cnblogs.com/ysaw/p/4172592.html
Copyright © 2011-2022 走看看