📄 sqlhelper.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
public class SQLHelper
{
//私有类作用是禁止类进行实例化
private SQLHelper()
{
}
/// <summary>
/// 利用已经指定的链接执行一个sql命令,从数据库中返回一个结果
/// </summary>
/// <remarks>
/// 例如:
/// DataTable r = GetDataTable(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
/// SqlParameter []sp={new SqlParameter("@gzxz",gzxz),new SqlParameter("@ZongJie_sj",ZongJie_sj)}; SQLhelper.Helper.ExecuteNonQuery(connstr, CommandType.StoredProcedure, "CM_gzzjsc", sp);
/// </remarks>
/// <param name="connectionString">有效的链接字符串</param>
/// <param name="commandType">命令类型 (stored procedure, text, etc.)</param>
/// <param name="commandText">存储过程名字,或者直接的sql命令</param>
/// <param name="commandParameters">一组执行过程的参数</param>
/// <returns>从数据库获得一个数据表</returns>
public static DataTable ExecuteTable(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
//用于在指定范围结束后让.NET自动调用实现了IDisposable接口的类的对象的Dispose()方法
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
cmd.Parameters.Clear();
return dt;
}
catch
{
conn.Close();
throw;
}
}
}
public static DataSet ExecuteSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
//用于在指定范围结束后让.NET自动调用实现了IDisposable接口的类的对象的Dispose()方法
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
catch
{
conn.Close();
throw;
}
}
}
/// <summary>
/// 同时多个语句的事务执行
/// </summary>
/// <remarks>
/// </remarks>
/// <example>
/// List<string> sqlText = new List<string>();
/// sqlText.Add("insert into table values('df','df')");
/// sqlText.Add("update table set age=40 where name='大人'");
/// ExecuteSqlTransaction(string connStr,sqlText)
/// </example>
/// <param name="connectionString">链接字符串</param>
/// <param name="sqlText">字符串型的泛型集合,里面存的是sql语句</param>
/// <returns>返回执行该事务所影响的行数</returns>
public static int ExecuteSqlTransaction(string connectionString, List<string> sqlText)
{
using(SqlConnection conn = new SqlConnection(connectionString))
{
int val=0;
if (conn.State != ConnectionState.Open)
conn.Open();
SqlCommand command = conn.CreateCommand();
SqlTransaction transaction = conn.BeginTransaction("InsertDeleteUpdateTrans");
command.Connection = conn;
command.Transaction = transaction;
try
{
foreach (string sqlString in sqlText)
{
command.CommandText = sqlString;
val = val + command.ExecuteNonQuery();
}
transaction.Commit();
}
catch (SqlException exOne)
{
val = 0;
try
{
transaction.Rollback();
}
catch (SqlException exTwo)
{
string typeTwo = exTwo.GetType().ToString();
string messageTwo = exTwo.Message;
throw;
}
string typeOne = exOne.GetType().ToString();
string messageOne = exOne.Message;
throw;
}
return val;
}
}
/// <summary>
///利用已经传入的参数和明确给定的链接字符串,进行操作数据库,并返回受影响的行数
/// </summary>
/// <remarks>
/// 例如:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">链接字符串</param>
/// <param name="commandType">命令类型</param>
/// <param name="commandText">存储过程名字或者sql命令</param>
/// <param name="commandParameters">一组用于执行命令的参数</param>
/// <returns>执行命令所影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
catch (SqlException ex)
{
throw ex;
}
}
}
/// <summary>
/// 依靠一个已经给定的数据库链接对象和相应的参数进行执行一组命令
/// </summary>
/// <remarks>
/// 例如:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">一个已经存在的数据库链接对象</param>
/// <param name="commandType">命令类型</param>
/// <param name="commandText">存储过程名字或者sql语句命令</param>
/// <param name="commandParameters">执行命令的一组参数</param>
/// <returns>执行该命令的所影响的行数</returns>
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
catch (SqlException ex)
{
throw ex;
}
finally
{
connection.Close();
}
}
/// <summary>
/// 利用已经存在的一个事务来执行一个sql命令
/// </summary>
/// <remarks>
/// 例如:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
/// SqlParameter []sp={new SqlParameter("@gzxz",gzxz),new SqlParameter("@ZongJie_sj",ZongJie_sj)}; SQLhelper.Helper.ExecuteNonQuery(connstr, CommandType.StoredProcedure, "CM_gzzjsc", sp);
/// </remarks>
/// <param name="trans">一个已经存在的sql事务</param>
/// <param name="commandType">命令类型(存储过程,sql语句等等)</param>
/// <param name="commandText">存储过程名字或者T-SQL命令</param>
/// <param name="commandParameters">用于执行命令的一组参数</param>
/// <returns>一个执行命令所影响行数的整数</returns>
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -