不妥的地方 不规范的地方请大家指出
或者请大家也发一个简单的DbHelper 模块我看看,谢谢! public class DbHelper
{
private static SqlConnection scon;
public static string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]; public static SqlConnection GetDBconnection
{
get
{
if (scon == null)
{
scon = new SqlConnection(ConnectionString);
try
{
scon.Open();
}
catch (Exception)
{
}
}
else switch (scon.State)
{
case ConnectionState.Closed:
scon.Open();
break;
case ConnectionState.Broken:
scon.Close();
scon.Open();
break;
}
return scon;
}
} /// <summary>
/// 执行语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ExecuteSql(string sql)
{
try
{
using (SqlCommand scom = new SqlCommand(sql, GetDBconnection))
{
int result = Convert.ToInt32(scom.ExecuteNonQuery());
return result;
}
}
catch (SqlException ex)
{
scon.Close();
throw ex; ;
}
finally
{
scon.Close(); //添加
}
} /// <summary>
/// 返回记录
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public DataTable Getdatatable(string sql)
{
try
{
DataSet ds = new DataSet();
ds.CaseSensitive = false;
using (SqlCommand scom = new SqlCommand(sql, GetDBconnection))
{
SqlDataAdapter sda = new SqlDataAdapter(scom);
sda.Fill(ds);
sda.Dispose();
return ds.Tables[0];
}
}
catch (SqlException ex)
{
throw ex;
}
}
}
或者请大家也发一个简单的DbHelper 模块我看看,谢谢! public class DbHelper
{
private static SqlConnection scon;
public static string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]; public static SqlConnection GetDBconnection
{
get
{
if (scon == null)
{
scon = new SqlConnection(ConnectionString);
try
{
scon.Open();
}
catch (Exception)
{
}
}
else switch (scon.State)
{
case ConnectionState.Closed:
scon.Open();
break;
case ConnectionState.Broken:
scon.Close();
scon.Open();
break;
}
return scon;
}
} /// <summary>
/// 执行语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ExecuteSql(string sql)
{
try
{
using (SqlCommand scom = new SqlCommand(sql, GetDBconnection))
{
int result = Convert.ToInt32(scom.ExecuteNonQuery());
return result;
}
}
catch (SqlException ex)
{
scon.Close();
throw ex; ;
}
finally
{
scon.Close(); //添加
}
} /// <summary>
/// 返回记录
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public DataTable Getdatatable(string sql)
{
try
{
DataSet ds = new DataSet();
ds.CaseSensitive = false;
using (SqlCommand scom = new SqlCommand(sql, GetDBconnection))
{
SqlDataAdapter sda = new SqlDataAdapter(scom);
sda.Fill(ds);
sda.Dispose();
return ds.Tables[0];
}
}
catch (SqlException ex)
{
throw ex;
}
}
}
解决方案 »
- 求高手帮忙看下下面的方法是干嘛的,顺便每一行都标上注释,50分辛苦费双手奉上
- 工作流问题,非常急,高分在线等
- 模拟器调试出现异常NotSupportedException: System.Drawing.Bitmap
- SQL查询语句生成-晒图
- datalist问题 没分了
- 数据库连接字符串的问题"server=192.168.0.1;database=test;User Id=sa;pwd=123;"
- GridView控件中用DropDownList查询数据库的问题
- datagridview拖拽
- 编译时,命令行下提示错误?请教各位朋友!谢谢了!
- 如何将winform 中datetimepicker控件中的年份、月、周翻译成英文显示?
- 图片旋转 怎么才能不改变图片尺寸【C#】
- matlab 程序翻译成c#
是不是因为查询没有关闭,会使更新报错!!!不定义公用全局的话,
每个上面加
using(sqlconnection conntion =new sqlconnection(ConnectionString))
{}
那我这个定义就可以不要了
public static SqlConnection GetDBconnection
{
}
请帮助看看怎么改了,感谢!
/// SQLServer 帮助类
/// </summary>
public class SQLHelper
{
//定义对象
private SqlConnection conn = null;
private SqlCommand cmd = null;
private SqlDataAdapter sda = null;
private DataSet ds = null; //定义连接字符串
private string connStr = "server=.;database=MyMemoDB;uid=sa;pwd=123456"; /// <summary>
/// 得到所有备忘录
/// </summary>
/// <returns>备忘录DataSet</returns>
public DataSet SearchAll(string sql)
{
try
{
using (conn = new SqlConnection(connStr))
{
//打开
conn.Open();
//创建命令对象
cmd = new SqlCommand(sql,conn);
//创建适配器
sda = new SqlDataAdapter(cmd);
//创建数据集
ds = new DataSet();
//填充
sda.Fill(ds); return ds;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
}
}
这只是我一般写的一个简单的例子。。
按你的代码 直接修改的public class DbHelper
{
privatestatic string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]; //可以直接封装SqlCommand
public SqlCommand GetComm()
{
SqlCommand comm = new SqlCommand();
comm.CommandText = sql;
comm.Connection = new SqlConnection(ConnectionString);
return comm;
}
/// <summary>
/// 执行语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ExecuteSql(string sql)
{
using (SqlCommand scom = GetComm(sql))
{
using(scom.Connection)
{
scom.Connection.Open();
int result = Convert.ToInt32(scom.ExecuteNonQuery());
return result;
}
}
} /// <summary>
/// 返回记录
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public DataTable Getdatatable(string sql)
{
try
{
DataSet ds = new DataSet();
ds.CaseSensitive = false;
using (SqlCommand scom = GetComm(sql))
{
SqlDataAdapter sda = new SqlDataAdapter(scom);
sda.Fill(ds);
sda.Dispose();
return ds.Tables[0];
}
}
catch (SqlException ex)
{
throw ex;
}
}
}
基本上再往后面添加方法都是一样的,传递给GetComm()方法一个sql语句就可以了
/// 执行语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ExecuteSql(string sql)
{
using (SqlCommand scom = GetComm(sql))
{
using(scom.Connection)
{
scom.Connection.Open();
int result = Convert.ToInt32(scom.ExecuteNonQuery());
return result;
}
}
} 不需要关闭 Connection();
public class Date
{
string constr = string.Format("Data Source= ;Initial Catalog= ;User Id= ;Password= ;");
///执行数据库操作
#region
/// <summary>
/// 执行一般SQL操作
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>影响行数</returns>
public bool ExecuteSql(string sql)
{
try
{
SqlConnection sqlcon = new SqlConnection(constr);
SqlCommand command = new SqlCommand(sql, sqlcon);
sqlcon.Open();
int resulr = command.ExecuteNonQuery();
sqlcon.Close();
sqlcon.Dispose();
if (resulr > 0)
return true;
else
return false;
}
catch (System.Exception ex)
{
throw ex;
}
}
/// <summary>
/// 执行获取数据集的操作
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>数据集</returns>
public DataSet GetData(string sql)
{
try
{
SqlConnection sqlcon = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(sql, sqlcon);
sqlcon.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, "Table");
sqlcon.Close();
sqlcon.Dispose();
return ds;
}
catch (System.Exception ex)
{
throw ex;
}
}
}
我这样写公用它 不对吗???? 请大师改改!
public static SqlConnection GetDBconnection
{
get
{
if (scon == null)
{
scon = new SqlConnection(ConnectionString);
try
{
scon.Open();
}
catch (Exception)
{
}
}
else switch (scon.State)
{
case ConnectionState.Closed:
scon.Open();
break;
case ConnectionState.Broken:
scon.Close();
scon.Open();
break;
}
return scon;
}
}
{
using (SqlCommand scom = new SqlCommand(sql, connection))
{
try
{
connection.Open();
int rows = scom.ExecuteNonQuery();
return rows;
}
catch (SqlException ex)
{
connection.Close();
throw ex;
}
}
}
+1请用这个帮助我改改,谢谢!!
网上百度 微软DbHelp类 . 有现成的 .
看了你这个数据访问操作底层类 . 建议你 把连接字符穿共享.
每个sqlconnection 最好在每一个方法中就得释放.每个方法有独自的sqlconnection.
一定要在方法中随时用随时创建和销毁。
你可以参考我写的这个类:
http://www.cnblogs.com/lifeil/archive/2013/04/16/3024161.html