操作数据库的类

public class DB
{
    SqlConnection con = null;//定义一个类属性,类型为SQL连接
    SqlCommand cmd = new SqlCommand();//针对 数据库操作的命令对象
 
    //利用构造函数初始化 SQL连接
    public DB()
 {
        con = new SqlConnection("server=.;database=vote;uid=sa;pwd=;");
 }

    public SqlConnection getCon()
    {
        if(con.State == ConnectionState.Closed)
            con.Open();//打开连接
        return con;
    }
    //关闭连接
    public void clear()
    {
        if (con.State == ConnectionState.Open)
            con.Close();
    }
    //根据传入的SQL语句,执行
    public int executeNonQuery(string strSql)
    {
        cmd.Connection = getCon();
        cmd.CommandText = strSql;
        int i = cmd.ExecuteNonQuery();
        clear();
        return i;
    }

    //根据传入的SQL语句 执行 并返回结果
    public string executeGetReturn(string strSql)//strSql 是传入SQL命令语句
    {
        //得到数据的连接 并且这个连接是打开
       // getCon();

        //建立一个 命令对象
        cmd.Connection = getCon(); //命令对象是需要基于 一个已经打开了的连接
        cmd.CommandText = strSql;   //指定数据库命令对象的 执行语句

        string result = cmd.ExecuteScalar().ToString(); //执行命令语句,并将其以字符串的形式返回
        clear();
        return result;
    }

    //得到一个数据集
    public DataSet getDs(string strSql,string tableName)
    {
        SqlDataAdapter sda = new SqlDataAdapter(strSql, getCon());
        DataSet ds = new DataSet();
        sda.Fill(ds, tableName);
        clear();
        return ds;
    }


    //根据传入的SQL语句,执行并返回一个只向前的数据流DataReader
    public SqlDataReader getSdr(string strSql)
    {
        cmd.Connection = getCon();
        cmd.CommandText = strSql;
        SqlDataReader sdr = cmd.ExecuteReader();
        return sdr;
    }
   
    //定义批量执行多条SQL语句的方法
    public bool executeTransaction(string[] strSql)
    {
        bool flag = false;
        con = getCon();//得到连接
        cmd.Connection = con;//命令对象
        SqlTransaction myTransaction; //声明一个SQL事物类型
        myTransaction = con.BeginTransaction();//基于一个连接初始化事物
        try
        {
            /*
            for (int i = 0; i < strSql.Length; i++)
            {
                cmd.Transaction = myTransaction;//指定SQL命令语句 的事物
                cmd.CommandText = strSql[i];//给定命令语句
                cmd.ExecuteNonQuery();//执行SQL语句
            }
             * */
            int i = 0;
            /*
            while(i<strSql.Length)
            {
                cmd.Transaction = myTransaction;//指定SQL命令语句 的事物
                cmd.CommandText = strSql[i];//给定命令语句
                cmd.ExecuteNonQuery();//执行SQL语句
                i += 1;
            }*/
            /*
            do
            {
                cmd.Transaction = myTransaction;//指定SQL命令语句 的事物
                cmd.CommandText = strSql[i];//给定命令语句
                cmd.ExecuteNonQuery();//执行SQL语句
                i += 1;
            } while (i < strSql.Length);
             */
         
            foreach (string sql in strSql)//遍历
            {
                cmd.Transaction = myTransaction;//指定SQL命令语句 的事物
                cmd.CommandText = sql;//给定命令语句
                cmd.ExecuteNonQuery();//执行SQL语句
            }
            myTransaction.Commit();
            flag = true;
        }
        catch (Exception e)
        {
            myTransaction.Rollback();
            flag = false;
        }
        finally
        {
            clear();
        }
    
        return flag;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值