using(SqlConnection connection=new SqlConnection(connectionString)){}

using(SqlConnection connection=new SqlConnection(connectionString)){},第1张

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#怎么连接数据库并使用数据库啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9307794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存