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;
}
}