/// <summary>
/// 数据库通用操作类
/// </summary>
public abstract class DbHelper
{
#region " 连接字符串 "
//连接字符串
//public static string ConnString = ConfigurationManager.ConnectionStrings["CommonSqlConnectionString"].ConnectionString;
public static string DefaultConnString = string.Empty;
public const int defaultCommandTimeout = ;
public const int defaultdbconfig = ; #endregion #region " GetSqlCommand " /// <summary>
/// 获取初始化好的Command对象
/// </summary>
/// <param name="conn">Connection对象</param>
/// <param name="cmdText">命令文本</param>
/// <param name="cmdType">命令类型</param>
/// <param name="parameters">参数列表</param>
/// <returns>初始化好的Command对象</returns>
private static SqlCommand GetSqlCommand(SqlConnection conn, string cmdText, CommandType cmdType, SqlParameter[] parameters)
{
SqlCommand cmd = new SqlCommand(cmdText, conn);
cmd.CommandType = cmdType;
cmd.CommandTimeout = defaultCommandTimeout;
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
} return cmd;
} #endregion #region " ExecSqlDataSet " public static DataTable ExecSqlDataSet(string strSQL)
{
return ExecSqlDataSet(strSQL, null);
} public static DataTable ExecSqlDataSet(string strSQL, SqlParameter[] parameters)
{
return ExecSqlDataSet(strSQL, parameters, DefaultConnString);
} public static DataTable ExecSqlDataSet(string strSQL, SqlParameter[] parameters, string connStr)
{
if (string.IsNullOrWhiteSpace(connStr))
{
return new DataTable();
}
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Dispose();
da.Dispose();
return ds.Tables[];
}
} #endregion #region " ExecSqlNonQuerry " /// <summary>
/// 执行非查询SQL语句
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <returns>受影响的行数</returns>
public static int ExecSqlNonQuerry(string strSQL)
{
return ExecSqlNonQuerry(strSQL, null);
} /// <summary>
/// 执行非查询的带参数的SQL语句
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <returns>受影响的行数</returns>
public static int ExecSqlNonQuerry(string strSQL, SqlParameter[] parameters)
{
return ExecSqlNonQuerry(strSQL, parameters, DefaultConnString);
} public static int ExecSqlNonQuerry(string strSQL, SqlParameter[] parameters, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
cmd.CommandTimeout = ;
int result = cmd.ExecuteNonQuery();
cmd.Dispose();
return result;
}
} #endregion #region " ExecSqlScalar " /// <summary>
/// 执行统计查询
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <returns>执行结果的第1行第1列的值</returns>
public static object ExecSqlScalar(string strSQL)
{
return ExecSqlScalar(strSQL, null);
} /// <summary>
/// 执行带参数的统计查询
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <param name="parameters">参数数组</param>
/// <returns>执行结果的第1行第1列的值</returns>
public static object ExecSqlScalar(string strSQL, SqlParameter[] parameters)
{
return ExecSqlScalar(strSQL, parameters, DefaultConnString);
} /// <summary>
/// 执行带参数的统计查询
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <param name="parameters">参数数组</param>
/// <returns>执行结果的第1行第1列的值</returns>
public static object ExecSqlScalar(string strSQL, SqlParameter[] parameters, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
object result = cmd.ExecuteScalar();
cmd.Dispose();
return result;
}
} #endregion #region " ExecProcDataSet " /// <summary>
/// 执行存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <returns>查询结果</returns>
public static DataSet ExecProcDataSet(string procName)
{
return ExecProcDataSet(procName, null);
}
/// <summary>
/// 执行带参数的存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static DataSet ExecProcDataSet(string procName, SqlParameter[] parameters)
{
return ExecProcDataSet(procName, parameters, DefaultConnString);
} /// <summary>
/// 执行带参数的存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static DataSet ExecProcDataSet(string procName, SqlParameter[] parameters, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand cmd = GetSqlCommand(conn, procName, CommandType.StoredProcedure, parameters);
cmd.CommandTimeout = ;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Dispose();
return ds;
}
} #endregion #region " ExecProcDataTable " /// <summary>
/// 执行存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <returns>查询结果</returns>
public static DataTable ExecProcDataTable(string procName)
{
return ExecProcDataSet(procName).Tables[];
}
/// <summary>
/// 执行带参数的存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static DataTable ExecProcDataTable(string procName, SqlParameter[] parameters)
{
return ExecProcDataSet(procName, parameters).Tables[];
} public static DataTable ExecProcDataTable(string procName, SqlParameter[] parameters, string connStr)
{
return ExecProcDataSet(procName, parameters, connStr).Tables[];
} #endregion #region " ExecProcNonQuerry " /// <summary>
/// 执行非查询存储过程
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <returns>受影响的行数</returns>
public static int ExecProcNonQuerry(string procName)
{
return ExecProcNonQuerry(procName);
} /// <summary>
/// 执行非查询的带参数的存储过程
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <returns>受影响的行数</returns>
public static int ExecProcNonQuerry(string procName, SqlParameter[] parameters)
{
return ExecProcNonQuerry(procName, parameters, DefaultConnString);
} /// <summary>
/// 执行非查询的带参数的存储过程
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <returns>受影响的行数</returns>
public static int ExecProcNonQuerry(string procName, SqlParameter[] parameters, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand cmd = GetSqlCommand(conn, procName, CommandType.StoredProcedure, parameters);
int result = cmd.ExecuteNonQuery();
cmd.Dispose();
return result;
}
} #endregion #region " ExecSqlDataReader " /// <summary>
/// 执行SQL语句,返回执行结果
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <returns>查询结果</returns>
public static SqlDataReader ExecSqlDataReader(string strSQL)
{
return ExecSqlDataReader(strSQL, null);
} /// <summary>
/// 执行带参数的SQL语句,返回执行结果
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static SqlDataReader ExecSqlDataReader(string strSQL, SqlParameter[] parameters)
{
return ExecSqlDataReader(strSQL, parameters, DefaultConnString);
} /// <summary>
/// 执行带参数的SQL语句,返回执行结果
/// </summary>
/// <param name="strSQL">待执行SQL语句</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static SqlDataReader ExecSqlDataReader(string strSQL, SqlParameter[] parameters, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
SqlDataReader result = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Dispose();
return result;
}
} #endregion #region " ExecProcDataReader " /// <summary>
/// 执行存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <returns>查询结果</returns>
public static SqlDataReader ExecProcDataReader(string procName)
{
return ExecProcDataReader(procName, null);
} /// <summary>
/// 执行带参数的存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static SqlDataReader ExecProcDataReader(string procName, SqlParameter[] parameters)
{
return ExecProcDataReader(procName, parameters, DefaultConnString);
} /// <summary>
/// 执行带参数的存储过程,返回执行结果
/// </summary>
/// <param name="procName">待执行存储过程</param>
/// <param name="parameters">参数数组</param>
/// <returns>查询结果</returns>
public static SqlDataReader ExecProcDataReader(string procName, SqlParameter[] parameters, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open(); SqlCommand cmd = GetSqlCommand(conn, procName, CommandType.StoredProcedure, parameters);
SqlDataReader result = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Dispose();
return result;
}
} #endregion #region " DtToSqlServer " /// <summary>
/// 将DataTable批量导入SqlServer
/// </summary>
/// <param name="dtExcel">数据表</param>
/// <param name="tableName">目标数据表名</param>
/// <param name="dtColName">对应列的数据集</param>
public static void DtToSqlServer(DataTable dtExcel, string tableName, DataTable dtColName)
{
DtToSqlServer(dtExcel, tableName, dtColName, DefaultConnString);
} /// <summary>
/// 将DataTable批量导入SqlServer
/// </summary>
/// <param name="dtExcel">数据表</param>
/// <param name="tableName">目标数据表名</param>
/// <param name="dtColName">对应列的数据集</param>
public static void DtToSqlServer(DataTable dtExcel, string tableName, DataTable dtColName, string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
try
{
bulkCopy.DestinationTableName = tableName;//要插入的表的表名
for (int i = ; i < dtColName.Rows.Count; i++)
{
bulkCopy.ColumnMappings.Add(dtColName.Rows[i][].ToString().Trim(), dtColName.Rows[i][].ToString().Trim()); } bulkCopy.WriteToServer(dtExcel);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
} #endregion #region
/// <summary>
///
/// </summary>
/// <param name="dbconfig">目标连接字符</param>
/// <param name="tablename">目标表</param>
/// <param name="dt">源数据</param>
public static string SqlBulkCopyByDatatable(string tablename, DataTable table, string connStr, SqlConnection m_clsSqlConn)
{
string dataBaseStr = "";
if (tablename.Contains("."))
{
dataBaseStr = tablename.Substring(, tablename.LastIndexOf(".") + );
tablename = tablename.Substring(tablename.LastIndexOf(".") + );
} try
{
string result = "";
SqlBulkCopy sqlBulkCopy = null;
if (m_clsSqlConn != null)
{
sqlBulkCopy = new SqlBulkCopy(m_clsSqlConn);
if (m_clsSqlConn.State == ConnectionState.Closed)
{
m_clsSqlConn.Open();
}
}
else
{
sqlBulkCopy = new SqlBulkCopy(connStr);
} sqlBulkCopy.DestinationTableName = dataBaseStr + ((tablename.IndexOf("[") > - && tablename.IndexOf("]") > -) ? tablename : "[" + tablename + "]");
sqlBulkCopy.BulkCopyTimeout = ;
//sqlBulkCopy.BatchSize = 800; for (int i = ; i < table.Columns.Count; i++)
{
sqlBulkCopy.ColumnMappings.Add(table.Columns[i].ColumnName, table.Columns[i].ColumnName);
} if (table.Rows.Count > )
{
sqlBulkCopy.WriteToServer(table);
}
else
{
result = "表为空";
} sqlBulkCopy.Close();
return result;
}
catch (Exception e)
{
return e.Message;
}
finally
{
try
{
if (m_clsSqlConn != null)
{ try
{
if (m_clsSqlConn.State == ConnectionState.Open)
{
m_clsSqlConn.Close();
}
}
catch (Exception)
{ }
}
}
catch (Exception)
{ }
}
} public static string SqlBulkCopyByDatatable(string tablename, DataTable table, SqlConnection m_clsSqlConn)
{
return SqlBulkCopyByDatatable(tablename, table, string.Empty, m_clsSqlConn); }
public static string SqlBulkCopyByDatatable(string tablename, DataTable table, string connStr)
{
return SqlBulkCopyByDatatable(tablename, table, connStr, null);
} public static string SqlBulkCopyByDatatable(string tablename, DataTable table)
{
return SqlBulkCopyByDatatable(tablename, table, DefaultConnString, null);
} public static string CreateTempTable(string tablename, DataTable table, string connStr)
{
return CreateTempTable(tablename, table, new SqlConnection(connStr));
}
public static string CreateTempTable(string tablename, DataTable table, SqlConnection connStr)
{
try
{ string sqlstr = "CREATE TABLE [" + tablename + "](";
for (int i = ; i < table.Columns.Count; i++)
{
switch (table.Columns[i].DataType.FullName)
{
case "System.String":
{
sqlstr += "[" + table.Columns[i].ColumnName + "] [nvarchar](4000) NULL,";
}
break;
case "System.Int32":
{
sqlstr += "[" + table.Columns[i].ColumnName + "] [int] NULL,";
}
break;
case "System.Double":
{
sqlstr += "[" + table.Columns[i].ColumnName + "] [numeric](24,2) NULL,";
}
break;
case "System.DateTime":
{
sqlstr += "[" + table.Columns[i].ColumnName + "] [datetime] NULL,";
}
break;
default:
{
sqlstr += "[" + table.Columns[i].ColumnName + "] [nvarchar](4000) NULL,";
}
break;
}
}
sqlstr = sqlstr.Substring(, sqlstr.Length - ) + ")"; if (connStr.State != ConnectionState.Open)
{
connStr.Open();
} SqlCommand cmd = GetSqlCommand(connStr, sqlstr, CommandType.Text, null);
int result = cmd.ExecuteNonQuery();
cmd.Dispose();
return "";
}
catch (Exception e)
{
return e.ToString();
}
} #endregion }
  

SqlServer DbHelper的更多相关文章

  1. 通用权限底层研究:Web应用限制IP访问的功能实现

    如果你的web应用受到恶意扫描或攻击,你会怎么处理呢?大多数时候从应用日志里可以看到恶意扫描或攻击,遇到此类情况,如有一个可以进行IP访问控制的功能就好些了. 现将在MVC下实现的一个IP访问限制功能 ...

  2. 通用超级强大的基于Oracle数据库的代码生成器

    项目中使用了Oracle数据库,命名基本规范为表名和字段名全部大写,用下划线分割各个单词: 如“BASE_USER_LOGON_EXTEND”这个表表示用户登录的扩展表. 基于这个规范,通用权限管理系 ...

  3. using System.Reflection;

    基础代码: public interface IDBHelper { void Query(); } public class DBHelper : IDBHelper { public int Id ...

  4. Reflect(反射)

    反射.反射,程序员的快乐.反射是无处不在的. 那么什么是反射:通过反射,可以在运行时获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息.有了反射,即可对每一个类型了如指 ...

  5. 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)

    一. 加载dll,读取相关信息 1. 加载程序集的三种方式 调用Assembly类下的三个方法:Load.LoadFile.LoadFrom. //1.1 Load方法:动态默认加载当前路径下的(bi ...

  6. 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射

    使用Code First建模自引用关系笔记   原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...

  7. C# 反射简单介绍

    原文:https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序 ...

  8. 兼容SQLSERVER、Oracle、MYSQL、SQLITE的超级DBHelper

    本示例代码的关键是利用.net库自带的DbProviderFactory来生产数据库操作对象. 从下图中,可以看到其的多个核心方法,这些方法将在我们的超级DBHelper中使用. 仔细研究,你会发现每 ...

  9. {T4模板}C# Net MVC+SqlServer=T4模板生成实体类并操作数据(DbHelper+DBManage)

    1.ConnectionString,数据库链接 Web.config <configuration> <connectionStrings> <!-- 数据库 SQL ...

随机推荐

  1. Go中的文件读写

    在 Go 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄 .我们来看一下os包的使用方式. 1.读取文件 os包提供了两种打开文件的方法: Open(name string) ...

  2. HTML/CSS:div居中和div内部元素垂直居中(1)

    div居中 div水平和垂直居中,text-align和vertical-align不起作用,因为标签div没有这两个属性,所以再css中设置这两个值不能居中的效果 1. div水平居中:设置marg ...

  3. Windows Server2008 监控服务器性能

    下面学习Windows Server2008监控服务器性能包括 日志管理,归档日志,日志排错,怎么配置计算机以转发和收集事件,使用任务管理监控内存和CPU的使用,查看程序内存使用,查看程序CPU使用, ...

  4. 析构函数中调用 Dispose 报错 :Internal .Net Framework Data Provider error 1.[非原创]

    搜索MSDN的资源可以找到答案: 原文如下http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=473449&SiteID=1 以下是关于 ...

  5. 导入spark2.3.3源码至intellij idea

    检查环境配置 maven环境 2.检查scala插件 没有的话可以到https://plugins.jetbrains.com/plugin/1347-scala/versions 下载与idea对应 ...

  6. Mac 隐藏、显示文件;移动开发者常用路径

    Mac Finder 标题显示文件完整路径 // mac Finder 标题栏显示文件夹完整路径, 把YES改为NO则是不显示 defaults write com.apple.finder _FXS ...

  7. Nginx总结(一)Linux如何安装Nginx

    以前写过一些Nginx的文章,但都是用到什么说什么,没有一个完整系统的总结.趁最近有时间,打算将Nginx相关的内容重新整理一下.nginx系列文章地址如下:https://www.cnblogs.c ...

  8. 线程学习oneday

    进程:执行中的程序叫做进程(Process),是一个动态的概念. 线程:一个进程可以产生多个线程.同多个进程可以共享操作系统的某些资源一样,同一进程的多个线程也可以共享此进程的某些资源(比如:代码.数 ...

  9. Android开发之输入框EditText介绍

    这篇文章主要为大家详细介绍了Android布局之输入框EditText设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 现在先简单介绍一下技术点: 1.如何使用圆角输入框和按钮背景 2.如何实现 ...

  10. 深度学习环境搭建部署(DeepLearning 神经网络)

    工作环境 系统:Ubuntu LTS 显卡:GPU NVIDIA驱动:410.93 CUDA:10.0 Python:.x CUDA以及NVIDIA驱动安装,详见https://www.cnblogs ...