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.Text.RegularExpressions;
using System.Data.SqlClient;/// <summary>
/// twtdb 的摘要说明
/// </summary>
public class twtdb
{
   protected static SqlConnection conn = new SqlConnection();
    protected static SqlCommand comm = new SqlCommand();
public twtdb()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
    
    /// <summary> 
    /// 打开数据库连接 
    /// </summary> 
    private static void openConnection()
    {
        if (conn.State == ConnectionState.Closed)
        {
            conn.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["abcConnectionString"].ConnectionString;
            comm.Connection = conn;
            try
            {
                conn.Open();
            }
            catch
            {
                System.Web.HttpContext.Current.Response.Write("数据库链接出错!");
                System.Web.HttpContext.Current.Response.End();
            }
        }
    }
    /// <summary> 
    /// 关闭当前数据库连接 
    /// </summary> 
    private static void closeConnection()
    {
        if (conn.State == ConnectionState.Open)
            conn.Close();
        conn.Dispose();
        comm.Dispose();
    }
    /// <summary> 
    /// 执行Sql语句 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    public static void ExecuteSql(string sqlstr)
    {
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            comm.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
    }    /// <summary> 
    /// 执行Sql更新语句 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param>
    /// <returns>布尔值</returns>
    public static bool ExecuteUpdate(string sqlstr)
    {
        int isUpdateOk = 0;
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            isUpdateOk = Convert.ToInt32(comm.ExecuteNonQuery());
        }
        catch (Exception e)
        {
            function.Alert(e.Message,"back");
        }
        finally
        {
            closeConnection();
        }
        if (isUpdateOk > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }    /// <summary> 
    /// 执行Sql查询语句并返回第一行的第一条记录,返回值为object 使用时需要拆箱操作 -> Unbox 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>object 返回值 </returns> 
    public static object ExecuteScalar(string sqlstr)
    {
        object obj = new object();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            obj = comm.ExecuteScalar();
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
        return obj;
    }    /// <summary> 
    /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接 
    /// 方法关闭数据库连接 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>SqlDataReader对象</returns> 
    public static SqlDataReader dataReader(string sqlstr)
    {
        SqlDataReader dr=null;
        try
        {
            openConnection();
            comm.CommandText = sqlstr;
            comm.CommandType = CommandType.Text;
            dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
        }
        catch (Exception e)
        {
            try
            {
                dr.Close();
                closeConnection();
            }
            catch
            {
                function.Alert(e.Message, "back");
            }
        }
        return dr;
    }    ///<summary>
    ///关闭datareader
    ///传入SqlDataReader的ref
    ///</summary>
    public static void closeDataReader(ref SqlDataReader sdr)
    {
        try
        {
            sdr.Close();
            sdr.Dispose();
            //closeConnection();
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
    }    /// <summary> 
    /// 返回指定Sql语句的DataSet 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>DataSet</returns> 
    public static DataSet dataSet(string sqlstr)
    {
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds);
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
        return ds;
    }    /// <summary> 
    /// 返回指定Sql语句的DataSet 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <param name="ds">传入的引用DataSet对象</param> 
    public static void dataSet(string sqlstr, ref DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds);
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }        finally
        {
            closeConnection();
        }
    }
    /// <summary> 
    /// 返回指定Sql语句的DataTable 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <returns>DataTable</returns> 
    public static DataTable dataTable(string sqlstr)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable datatable = new DataTable();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(datatable);
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
        return datatable;
    }    /// <summary> 
    /// 执行指定Sql语句,同时给传入DataTable进行赋值 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <param name="dt">ref DataTable dt </param> 
    public static void dataTable(string sqlstr, ref DataTable dt)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(dt);
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
    }    /// <summary> 
    /// 执行指定Sql语句 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    public static DataView dataView(string sqlstr)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        DataView dv = new DataView();
        DataSet ds = new DataSet();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds);
            dv = ds.Tables[0].DefaultView;
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
        return dv;
    }    /// <summary> 
    /// 执行指定Sql语句,开始记录位置,和返回记录数 
    /// </summary> 
    /// <param name="sqlstr">传入的Sql语句</param> 
    /// <param name="StartIndex">开始记录位置</param>
    /// <param name="pageSize">返回记录数</param> 
    public static DataView dataView(string sqlstr, int StartIndex, int pageSize)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        DataView dv = new DataView();
        DataSet ds = new DataSet();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds, StartIndex, pageSize, "pagelist");
            dv = ds.Tables["pagelist"].DefaultView;
        }
        catch (Exception e)
        {
            function.Alert(e.Message, "back");
        }
        finally
        {
            closeConnection();
        }
        return dv;
    }
 }