📄 dbhelper.cs
字号:
using System;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Collections;
using System.Text.RegularExpressions;
using NetCMS.Config;
namespace NetCMS.DALProfile
{
public abstract class DbHelper
{
public static void SetTimeoutDefault()
{
Timeout = 30;
}
public static int Timeout = 30;
public static IDbBase Provider = null;
public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
return ExecuteNonQuery(DBConfig.CmsConString, cmdType, cmdText, commandParameters);
}
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
using (DbConnection conn = Provider.CreateConnection())
{
conn.ConnectionString = connectionString;
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
public static int ExecuteNonQuery(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
public static int ExecuteNonQuery(DbTransaction trans, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
public static DbDataReader ExecuteReader(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
return ExecuteReader(DBConfig.CmsConString, cmdType, cmdText, commandParameters);
}
public static DbDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
DbConnection conn = Provider.CreateConnection();
conn.ConnectionString = connectionString;
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 执行对默认数据库有自定义排序的分页的查询
/// </summary>
/// <param name="connectionString">连接字符串
/// <param name="SqlAllFields">查询字段,如果是多表查询,请将必要的表名或别名加上,如:a.id,a.name,b.score</param>
/// <param name="SqlTablesAndWhere">查询的表如果包含查询条件,也将条件带上,但不要包含order by子句,也不要包含"from"关键字,如:students a inner join achievement b on a.... where ....</param>
/// <param name="IndexField">用以分页的不能重复的索引字段名,最好是主表的自增长字段,如果是多表查询,请带上表名或别名,如:a.id</param>
/// <param name="OrderASC">排序方式,如果为true则按升序排序,false则按降序排</param>
/// <param name="OrderFields">排序字段以及方式如:a.OrderID desc,CnName desc</OrderFields>
/// <param name="PageIndex">当前页的页码</param>
/// <param name="PageSize">每页记录数</param>
/// <param name="RecordCount">输出参数,返回查询的总记录条数</param>
/// <param name="PageCount">输出参数,返回查询的总页数</param>
/// <returns>返回查询结果</returns>
public static DbDataReader ExecuteReaderPage(string connectionString, string SqlAllFields, string SqlTablesAndWhere, string IndexField, string GroupClause, string OrderFields, int PageIndex, int PageSize, out int RecordCount, out int PageCount, params DbParameter[] commandParameters)
{
DbConnection conn = Provider.CreateConnection();
conn.ConnectionString = connectionString;
try
{
conn.Open();
DbCommand cmd = Provider.CreateCommand();
PrepareCommand(cmd, conn, null, CommandType.Text, "", commandParameters);
string Sql = GetPageSql(conn, cmd, SqlAllFields, SqlTablesAndWhere, IndexField, OrderFields, PageIndex, PageSize, out RecordCount, out PageCount);
if (GroupClause != null && GroupClause.Trim() != "")
{
int n = Sql.ToLower().LastIndexOf(" order by ");
Sql = Sql.Substring(0, n) + " " + GroupClause +" "+ Sql.Substring(n);
}
cmd.CommandText = Sql;
DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
if (conn.State == ConnectionState.Open)
conn.Close();
throw;
}
}
public static DbDataReader ExecuteReader(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
DbDataReader rdr = cmd.ExecuteReader();
cmd.Parameters.Clear();
return rdr;
}
public static object ExecuteScalar(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
return ExecuteScalar(DBConfig.CmsConString, cmdType, cmdText, commandParameters);
}
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
using (DbConnection connection = Provider.CreateConnection())
{
connection.ConnectionString = connectionString;
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
public static object ExecuteScalar(DbConnection connection, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
public static object ExecuteScalar(DbTransaction trans, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
DbCommand cmd = Provider.CreateCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
public static DataTable ExecuteTable(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
return ExecuteTable(DBConfig.CmsConString, cmdType, cmdText, commandParameters);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -