using()
{}
将自动释放()中对象占用的资源,就不用手动connectionClose();了
如果单独的SqlConnection connection=new SqlConnection(connectionString);
在处理完成了之后,还必须手动connectionClose();
其他的就没区别了。
如果强调调用dispose使用using
强调异常处理使用trycatch
如果写程序的时候知道错误是什么,就用using+if,不建议使用try catch
using 语句确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此
通过将对象放入 try 块中,并在调用 finally 块中的Dispose,可以获得相同的结果
以下是一个C#与数据库 *** 作的通用类完整代码,几乎可以进行所有的 *** 作。不要在代码中出现SQL语句,要用存储过程,这样才能保证数据的安全。
public class DBHelper
{
private static SqlConnection connection;
private static SqlCommand command;
private static SqlDataAdapter da;
private static DataSet ds;
private static string connString = "Data Source=服务器名;Initial Catalog=数据库名;Integrated Security=true";//用windows身份登录
//连接属性:用于实例化连接对象并打开连接对象
public static SqlConnection Connection
{
get
{
if (connection == null)
{
connection = new SqlConnection(connString);
}
if (connectionState==ConnectionStateBroken || connectionState==ConnectionStateClosed)
{
connectionOpen();
}
return connection;
}
}
/// <summary>
/// 通过SQL语句从数据库返回单个值
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <returns>返回值:1、0、-1</returns>
public static int GetScalar(string strSql)
{
try
{
command = new SqlCommand(strSql,connection);
connectionOpen();
int i = (int)commandExecuteScalar();
return i;
}
catch (Exception)
{
connectionClose();
return -1;
}
}
/// <summary>
/// 通过存储过程及参数返回单个值
/// </summary>
/// <param name="storedProcedureName">存储过程名</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回单个值</returns>
public static object GetScalar(string storedProcedureName, params SqlParameter[] parameters)
{
try
{
//将存储过程封装在命令对象
command = new SqlCommand(storedProcedureName, Connection);
//指定命令对象执行的类型为存储过程
commandCommandType = CommandTypeStoredProcedure;
//将参数添加到命令对象的参数集合中
commandParametersAddRange(parameters);
//执行命令
object o = commandExecuteScalar();
//关闭连接
connectionClose();
//返回对象
return o;
}
catch (Exception)
{
connectionClose();
return null;
}
}
/// <summary>
/// 通过存储过程及参数查询返回数据集
/// </summary>
/// <param name="storedProcedureName">存储过程名</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回数据集</returns>
public static DataSet GetDataSet(string storedProcedureName, params SqlParameter[] parameters)
{
//将存储过程封装在命令对象
command = new SqlCommand(storedProcedureName, Connection);
//指定命令执行的类型为存储过程
commandCommandType = CommandTypeStoredProcedure;
//将参数添加到命令对象的参数集合中
commandParametersAddRange(parameters);
da = new SqlDataAdapter(command);
ds = new DataSet();
daFill(ds);
return ds;
}
/// <summary>
/// 通过存储过程及参数执行对表的增删改 *** 作
/// </summary>
/// <param name="storedProcedureName">存储过程名</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回 *** 作是否成功</returns>
public static bool Execute(string storedProcedureName,params SqlParameter[] parameters)
{
try
{
command = new SqlCommand(storedProcedureName, Connection);
commandCommandType = CommandTypeStoredProcedure;
commandParametersAddRange(parameters);
commandExecuteNonQuery();
connectionClose();
return true;
}
catch (Exception)
{
connectionClose();
return false;
}
}
}
以上就是关于using(SqlConnection connection=new SqlConnection(connectionString)){}全部的内容,包括:using(SqlConnection connection=new SqlConnection(connectionString)){}、C#数据库 *** 作时,优先使用using还是try...catch,为什么、C#怎么连接数据库并使用数据库啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)