/// <summary>
/// 增加 更新 删除方法
/// </summary>
/// <param name="sql">SQL语句 或 存储过程</param>
/// <param name="sqlpar">参数</param>
/// <param name="type">操作命令类型</param>
/// <param name="index">输出参数的索引</param>
/// <returns></returns>
public static object InsertOrUpdateOrDelete(string sql,List<SqlParameter> sqlpar,CommandType type,int index)
{
using (con=new SqlConnection(conStr))
{
try
{
com = new SqlCommand(sql,con);
com.CommandType = type;
com.Parameters.AddRange(sqlpar.ToArray());
com.Parameters[index].Direction = ParameterDirection.Output;
if (con.State != ConnectionState.Open)
con.Open();
com.ExecuteNonQuery();
if (index != -1)
return com.Parameters[index].Value;
else
return null;
}
catch (Exception e)
{
throw e;
}
finally
{
con.Close();
}
}
}
/// 增加 更新 删除方法
/// </summary>
/// <param name="sql">SQL语句 或 存储过程</param>
/// <param name="sqlpar">参数</param>
/// <param name="type">操作命令类型</param>
/// <param name="index">输出参数的索引</param>
/// <returns></returns>
public static object InsertOrUpdateOrDelete(string sql,List<SqlParameter> sqlpar,CommandType type,int index)
{
using (con=new SqlConnection(conStr))
{
try
{
com = new SqlCommand(sql,con);
com.CommandType = type;
com.Parameters.AddRange(sqlpar.ToArray());
com.Parameters[index].Direction = ParameterDirection.Output;
if (con.State != ConnectionState.Open)
con.Open();
com.ExecuteNonQuery();
if (index != -1)
return com.Parameters[index].Value;
else
return null;
}
catch (Exception e)
{
throw e;
}
finally
{
con.Close();
}
}
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="spName"></param>
/// <param name="sqlparams"></param>
public void UpdateData(string spName, List<SqlParameter> sqlparams)
{ try
{
using (dbConnection = new SqlConnection(connectionString))
{
dbConnection.Open();
dbCommand = new SqlCommand(spName, dbConnection);
dbCommand.CommandType = CommandType.StoredProcedure; foreach (SqlParameter sqlparam in sqlparams)
{
dbCommand.Parameters.Add(sqlparam);
}
dbCommand.ExecuteNonQuery(); dbCommand.Dispose();
dbConnection.Close();
dbConnection.Dispose();;
}
}
catch (Exception ex)
{
throw ex;
}
}
可以看看这个方法....
如如再传一个CommandType参数进来是不是更灵活一些,那样就既可以执行SQL语句也可以执行存储过程了呀
还有一个地方是
foreach (SqlParameter sqlparam in sqlparams)
{
dbCommand.Parameters.Add(sqlparam);
}
不是直接可以用dbCommand.Parameters.AddRange(sqlparam.ToArray())就可以了吗
我觉得写在一个方法里方便一点
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
}
}
}
这个本来就支持增加修改删除了
代码有问题
using (dbConnection = new SqlConnection(connectionString))
{
dbConnection.Open();
dbCommand = new SqlCommand(spName, dbConnection);
dbCommand.CommandType = CommandType.StoredProcedure; foreach (SqlParameter sqlparam in sqlparams)
{
dbCommand.Parameters.Add(sqlparam);
}
dbCommand.ExecuteNonQuery(); dbCommand.Dispose();
dbConnection.Close();
dbConnection.Dispose();
}
using block语句结束之前,会自动调用SqlConnection.Dispose方法。
没必要手动调用close和dispose方法;事实上,在dispose方法中已经调用了close方法。
using block中可以嵌套使用using block
using(dbCommand = new SqlCommand(spName, dbConnection))
{}