问题描述
class DataBaseOperate { SqlConnection conn; private void OpenConn()//打开数据库 { conn = new SqlConnection();conn.ConnectionString = ConfigurationManager.AppSettings["sqlconn"].ToString(); conn.Open(); } private void CloseConn()//关闭数据库 { conn.Close(); conn.Dispose(); } public DataSet GetDataSet(string Sql)//根据sql语句获得一个DataSet { OpenConn(); SqlDataAdapter da = new SqlDataAdapter(Sql, conn); DataSet ds = new DataSet(); da.Fill(ds); return ds; CloseConn(); } public DataTable ExecQuery(string Sql)//根据sql语句获得一个DataTable { OpenConn(); SqlDataAdapter da = new SqlDataAdapter(Sql, conn); DataTable dt = new DataTable(); da.Fill(dt); return dt; CloseConn(); } public string GetSingleValueFromSql(string strSql)//根据sql语句获得一个单值字符串 { OpenConn(); try { SqlCommand cmd = new SqlCommand(strSql, conn); string result = cmd.ExecuteScalar().ToString(); return result; } catch { return ""; } CloseConn(); } public bool ExecNoQuery(string strSql)//根据sql语句执行非查询操作 { OpenConn(); try { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = strSql; cmd.ExecuteNonQuery(); return true; } catch { return false; } CloseConn(); } //执行事务处理SQL public bool ExecTSQL(string[] strSql) { OpenConn(); SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted); try { for (int i = 0; i < strSql.Length; i++) { if (strSql[i] == "" || strSql[i] == null) { continue; } SqlCommand sqlCmd = conn.CreateCommand(); sqlCmd.Transaction = trans; sqlCmd.CommandText = strSql[i]; sqlCmd.ExecuteNonQuery(); } trans.Commit(); return true; } catch { trans.Rollback(); return false; } finally { trans = null; CloseConn(); } } //执行存储过程 public bool ExecProc(string strProcName) { OpenConn(); try { SqlCommand sqlCmd = conn.CreateCommand(); sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.CommandText = strProcName; sqlCmd.ExecuteNonQuery(); return true; } catch { return false; } finally { CloseConn(); } } //执行带参存储过程 public void ExecProc(string strProcName, SqlParameter[] parameters) { OpenConn(); try { SqlCommand sqlCmd = conn.CreateCommand(); sqlCmd.CommandText = strProcName; //声明存储过程名 sqlCmd.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters) { sqlCmd.Parameters.Add(parameter); } sqlCmd.ExecuteNonQuery(); } finally { CloseConn(); } } }
解决方案
很详细的注释了 !!! 记得要给分哈废话少说 给你代码(C#代码和JAVA代码差不多)class DataBaseOperate{ //声明 一个SqlConnection变量 SqlConnection conn; private void OpenConn() { //实例化SqlConnection对象 conn = new SqlConnection(); } //在配置文件里面拿取sqlconn字符串信息 conn.ConnectionString = ConfigurationManager.AppSettings["sqlconn"].ToString(); //打开数据库连接 conn.Open();}//关闭数据库private void CloseConn(){//关闭数据库连接并释放资源 conn.Close(); conn.Dispose();}//根据sql语句获得一个DataSetpublic DataSet GetDataSet(string Sql){//打开数据库连接 OpenConn(); //实例化SqlDataAdapter SqlDataAdapter da = new SqlDataAdapter(Sql, conn); //实例化一个结果集DataSet DataSet ds = new DataSet(); //fill方法装填结果集 da.Fill(ds); //返回结果集 return ds; //关闭数据库连接 CloseConn();}//根据sql语句获得一个DataTablepublic DataTable ExecQuery(string Sql){//打开数据库连接 OpenConn(); //实例化适配器SqlDataAdapter SqlDataAdapter da = new SqlDataAdapter(Sql, conn); //实例化一个DataTable DataTable dt = new DataTable(); //装填DataTable da.Fill(dt); //返回DataTable return dt; //关闭数据库连接 CloseConn();}//根据sql语句获得一个单值字符串public string GetSingleValueFromSql(string strSql){//打开数据库连接 OpenConn(); //try代码块(可以捕获异常) try { //创建SqlCommand对象 SqlCommand cmd = new SqlCommand(strSql, conn); //执行cmd语句 string result = cmd.ExecuteScalar().ToString(); //返回执行结果 return result; } catch { return ""; } //关闭数据库连接 CloseConn();}//根据sql语句执行非查询操作public bool ExecNoQuery(string strSql){//打开数据库连接 OpenConn(); try { //创建SqlCommand对象 SqlCommand cmd = conn.CreateCommand(); //设置cmd的CommandText (就是SQL语句) cmd.CommandText = strSql; //执行(最好把返回受影响行数给返回出去 大于0 return true) cmd.ExecuteNonQuery(); // return true; } catch { return false; } //关闭数据库连接 CloseConn();} //执行事务处理SQLpublic bool ExecTSQL(string[] strSql){//打开数据库连接 OpenConn(); //开启事务 SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted); try { for (int i = 0; i < strSql.Length; i++) { if (strSql[i] == "" || strSql[i] == null) { continue; } //用SqlConnection对象来创建SqlCommand SqlCommand sqlCmd = conn.CreateCommand(); //设置该cmd的事务 sqlCmd.Transaction = trans; //设置需要查询的sql语句 sqlCmd.CommandText = strSql[i]; //执行 sqlCmd.ExecuteNonQuery(); } //提交事务 trans.Commit(); return true; } catch { //回滚事务 trans.Rollback(); return false; } finally { //最后关闭数据库连接 重置事务 trans = null; CloseConn(); }}//执行存储过程public bool ExecProc(string strProcName){//打开数据库连接 OpenConn(); try { //创建SqlCommand对象 SqlCommand sqlCmd = conn.CreateCommand(); //设置cmd的类型(存储过程) sqlCmd.CommandType = CommandType.StoredProcedure; //把存储过程的名称赋给cmd内容(相当于SQL语句) sqlCmd.CommandText = strProcName; //执行cmd命令(即sql) sqlCmd.ExecuteNonQuery(); return true; } catch { return false; } finally { CloseConn(); }}//执行带参存储过程public void ExecProc(string strProcName, SqlParameter[] parameters){//打开数据库连接 OpenConn(); try { //实例化SqlCommand对象 SqlCommand sqlCmd = conn.CreateCommand(); //声明存储过程名 sqlCmd.CommandText = strProcName; //设置sqlCmd的CommandType sqlCmd.CommandType = CommandType.StoredProcedure; //迭代遍历存储过程需要的参数并添加 foreach (SqlParameter parameter in parameters) { sqlCmd.Parameters.Add(parameter); } //执行 sqlCmd.ExecuteNonQuery(); } finally { //关闭连接 CloseConn(); }}}
解决方案二:
楼上好人。