SQL连接类

来源:互联网 发布:sublime text windows 编辑:程序博客网 时间:2024/06/06 04:33

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;

/// <summary>
/// Database 的摘要说明
/// </summary>
public class Database
{
    protected SqlConnection Connection;
    protected string ConnectionString;
    //public string err;
 public Database()
 {
        //string s = ConfigurationSettings.AppSettings["t"].ToString();//取AppSettings节点下key为t的值
        //string s=System.Web.Configuration.WebConfigurationManager.ConnectionStrings["GameConnectionString"].ConnectionString.ToString();//取web.config里面connectionStrings的连接字符串;
        ConnectionString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Project;pwd=sa;uid=sa";
 }

    //Open方法根据ConnectionString属性,创建新的数据库连接对象,并赋予Connection属性。

    protected void Open()
    {
        if (Connection == null)
        {
            Connection = new SqlConnection(ConnectionString);
        }
        if (Connection.State.Equals(ConnectionState.Closed))
        {
            Connection.Open();
        }
    }

    //Colse方法关闭数据库连接

    public void Close()
    {
        if (Connection != null)
        {
            Connection.Close();
        }
    }


    //ExecuteSQL方法执行非查询SQL命令,并返回执行SQL所影响的数据记录数目

    public int ExecuteSQL(string SqlString)
    {
        int count = -1;
        Open();
        try
        {
            SqlCommand cmd = new SqlCommand(SqlString, Connection);
            count = cmd.ExecuteNonQuery();
        }
        catch
        {
            count = -1;
        }
        finally
        {
            Close();
        }
        return count;
    }

    //GetDataRow方法接收一个SQL查询命令(select语句),然后返回查询得到的一行数据对象DataRow

    public DataRow GetDataRow(string SqlString)
    {
        DataSet dataset = GetDataSet(SqlString);
        dataset.CaseSensitive = false;
        if (dataset.Tables[0].Rows.Count > 0)
        {
            return dataset.Tables[0].Rows[0];
        }
        else
        {
            return null;
        }
    }

    //GetDataSet方法接受一个SQL查询命令(select语句),然后返回查询得到的数据集DataSet

    public DataSet GetDataSet(string SqlString)
    {
        Open();
        SqlDataAdapter adapter = new SqlDataAdapter(SqlString, Connection);
        DataSet dataset = new DataSet();
        adapter.Fill(dataset);
        Close();
        return dataset;
    }

    ~Database()
    {
        try
        {
            if (Connection != null)
                Connection.Close();
        }
        catch { }
        try
        {
            Dispose();
        }
        catch { }
    }

    public void Dispose()
    {
        if (Connection != null)
        {
            Connection.Dispose();
            Connection = null;
        }
    }

    //该方法用于执行多条SQL查询语句,并返回成功与否
    public bool ExecuteSQL(ArrayList SqlStrings)
    {
        bool success = true;
        Open();
        SqlTransaction trans = Connection.BeginTransaction();
        SqlCommand cmd = Connection.CreateCommand();
        cmd.Connection = Connection;
        cmd.Transaction = trans;
        try
        {
            foreach (string str in SqlStrings)
            {
                cmd.CommandText = str;
                cmd.ExecuteNonQuery();
            }
            trans.Commit();
        }
        catch (Exception err1)
        {
            //err = err1.Message.ToString();
            success = false;
            trans.Rollback();
        }
        finally
        {
            Close();
        }
        return success;
    }

    //该方法根据SQL语句返回一个SqlDataReader
    public SqlDataReader GetDataReader(string SqlString)
    {
        Open();
        SqlCommand cmd = new SqlCommand(SqlString, Connection);
        return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    }

    //该方法根据表名和一个哈希
    public bool Insert(string TableName, Hashtable Cols)
    {
        int Count = 0;
        if (Cols.Count <= 0)
        {
            return true;
        }
        string Fields = "(";
        string Values = " values(";
        foreach (DictionaryEntry item in Cols)
        {
            if (Count != 0)
            {
                Fields += ",";
                Values += ",";
            }
            Fields += item.Key.ToString();
            Values += item.Value.ToString();
            Count++;
        }
        Fields += ")";
        Values += ")";
        string SqlString = "Insert into " + TableName + Fields + Values;
        return Convert.ToBoolean(ExecuteSQL(SqlString));
    }

    public bool Update(string TableName, Hashtable Cols, string Where)
    {//更新数据库表数据
        int Count = 0;
        if (Cols.Count <= 0)
        {
            return true;
        }
        string Fields = "";
        foreach (DictionaryEntry item in Cols)
        {
            if (Count != 0)
            {
                Fields += ",";
            }
            Fields += item.Key.ToString();
            Fields += "=";
            Fields += item.Value.ToString();
            Count++;
        }
        Fields += " ";
        string SqlString = "Update " + TableName + " set " + Fields + Where;
        return Convert.ToBoolean(ExecuteSQL(SqlString));
    }

原创粉丝点击