zoukankan      html  css  js  c++  java
  • SQL Server 数据库连接方法

    我们用c#写ado或者是asp,都需要连接数据库来读写数据,今天我们就来总结一下数据库连接都有哪些方法。

    首先我们就写最直接的方法,在事件中直接连接。(在这里就用WEB页面来展示)

    首先我们建立web页面,简单的两个textbox控件和一个button控件就可以了。为了配置数据方便,我们在添加一个DataSource

    配置数据源就是为了配置web.config里面的Configuration子节点connectionStrings

    <connectionStrings>
            <add name="ConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=D:aspDataLoginDataLoginApp_DataUserData.mdf;Integrated Security=True;User Instance=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>

    我们可以自己配置,但是在dataSource里面直接配置我觉得简单一点,也不用在记这些配置内容了。

    下面我们就开始直接连接数据库了。

    string username=Username.Text.Trim();
                string password = Password.Text.Trim() 
    SqlDataReader dr;
                System.Data.SqlClient.SqlConnection conn = new SqlConnection();
                
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                //新建sqlCommand对象
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
    cmd.CommandText = "SELECT [pass] FROM [UserInf] WHERE name=@loginname";
     cmd.CommandType = CommandType.StoredProcedure; //CommandType.Text;
                //添加查询参数对象,并给参数赋值
                SqlParameter para = new SqlParameter("@loginname", SqlDbType.NVarChar,50);
                para.Value = username;
                cmd.Parameters.Add(para);
                try
                {
                    conn.Open();
                    //SqlCommand Cmd = new SqlCommand();
                    dr = cmd.ExecuteReader();// 将检索的记录行填充到DataReader对象中
                    if (dr.Read())
                    {
                        if (dr.GetString(0).Trim() == password)
                        {
                            // 登录成功后记下该用户登录名,以便后续功能使用
                            Session.Add("username", username);
                            Username.Text = "";
                            Response.Write("恭喜你,你已登录成功!");
                        }
                        else
                        {
                            Response.Write("用户名或者密码错误!");
                        }
                    }
                    else
                    {
                        Response.Write("对不起,用户不存在!");
                    }
                        
                }
    
                catch (SqlException sqlException)
                {
                    Response.Write(sqlException.Message);   // 显示连接异常信息
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                        conn.Close();
                }

    这种连接数据库登陆的方式最直接,但是也最不容易维护,接下来我们就用添加helper类的方式连接数据库。

    首先我们要建立一个Helper类,微软自己就有封装的Help类,我们可以直接下载一份,不过我们在这里最好是自己写一个

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.SqlClient;
    using System.Configuration;
    
    namespace WebDemo
    {
        public class SqlHelper : IDisposable
        {
            SqlConnection conn = null;
    
    
            public SqlHelper()
            {
                string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                conn = new SqlConnection(connStr);
                conn.Open();
            }
    
            /// <summary>
            /// 实现查询语句返回是否执行(0,1)
            /// </summary>
            /// <param name="sqlCmd"></param>
            /// <returns></returns>
            public int GetResult(string sqlCmd)
            {
                int result = 0;//0代表不存在
                SqlCommand cmd = conn.CreateCommand();
                cmd.ExecuteNonQuery();
                cmd.CommandText = sqlCmd;
                result = Convert.ToInt32(cmd.ExecuteScalar().ToString());
                return result;
            }
            /// <summary>
            /// 关闭数据库
            /// </summary>
            public void Dispose()
            {
                if (conn != null)
                {
                    conn.Close();
                    conn.Dispose();
                }
            }
        }
    }

    这里的SqlHelper实现了IDisposable IDisposable接口的主要用途是释放非托管资源。当不再使用托管对象时,垃圾回收器会自动释放分配给该对象的内存。

    为了简单演示,我只写了三个函数,一个连接,一个查询,一个释放资源。微软的Help类不过是写了很多的重载方法,实现的功能都是按照这个模型来的。

    这个Help类可以实现多次复用,维护变得好了很多,实现在Page页面里页就没有了业务逻辑,

     protected void btnSubmit_Click(object sender, EventArgs e)
            {
                string userName = txtUserName.Text;
                string userPass = txtPass.Text;
                string sqlText = string.Format("SELECT count(*) FROM tblUser WHERE User_Name='{0}' AND User_PassWord='{1}'", userName, userPass);
    
                int result = 0;
                using (SqlHelper helper = new SqlHelper())
                {
                    result = helper.GetResult(sqlText);
                }
    
                if (result == 0)
                {
    
                    Page.RegisterStartupScript("loginError", "<script>window.alert('用户名或密码错误!')</script>");
                }
                else
                {
                    Session["UserName"] = userName;
                    Response.Redirect("~/Index.aspx");
                }
            }

    我们只要传入参数就可以了。

    这里写两种简单的连接数据可的方式,就是为了展示提炼Help类的编程方法,开拓 思维。

    现在编程都是用框架,这种提炼类的方法早已经被用的炉火纯青,但是对于初学者来说,这样自己提炼类对自己来说是一种好的锻炼,

    连接数据库的方法还有很多,这里就写这两种。其中有错误的地方,希望指正。

  • 相关阅读:
    简单的sql注入3
    简单的sql注入2
    简单的sql注入1
    python安装request及更新pip
    kali linux上安装ssh
    看起来有点难
    猫抓老鼠
    头有点大
    貌似有点难
    这个看起来有点简单!
  • 原文地址:https://www.cnblogs.com/widows/p/6804124.html
Copyright © 2011-2022 走看看