SqlServer DbHelper
/// <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的更多相关文章
- 通用权限底层研究:Web应用限制IP访问的功能实现
如果你的web应用受到恶意扫描或攻击,你会怎么处理呢?大多数时候从应用日志里可以看到恶意扫描或攻击,遇到此类情况,如有一个可以进行IP访问控制的功能就好些了. 现将在MVC下实现的一个IP访问限制功能 ...
- 通用超级强大的基于Oracle数据库的代码生成器
项目中使用了Oracle数据库,命名基本规范为表名和字段名全部大写,用下划线分割各个单词: 如“BASE_USER_LOGON_EXTEND”这个表表示用户登录的扩展表. 基于这个规范,通用权限管理系 ...
- using System.Reflection;
基础代码: public interface IDBHelper { void Query(); } public class DBHelper : IDBHelper { public int Id ...
- Reflect(反射)
反射.反射,程序员的快乐.反射是无处不在的. 那么什么是反射:通过反射,可以在运行时获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息.有了反射,即可对每一个类型了如指 ...
- 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
一. 加载dll,读取相关信息 1. 加载程序集的三种方式 调用Assembly类下的三个方法:Load.LoadFile.LoadFrom. //1.1 Load方法:动态默认加载当前路径下的(bi ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- C# 反射简单介绍
原文:https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序 ...
- 兼容SQLSERVER、Oracle、MYSQL、SQLITE的超级DBHelper
本示例代码的关键是利用.net库自带的DbProviderFactory来生产数据库操作对象. 从下图中,可以看到其的多个核心方法,这些方法将在我们的超级DBHelper中使用. 仔细研究,你会发现每 ...
- {T4模板}C# Net MVC+SqlServer=T4模板生成实体类并操作数据(DbHelper+DBManage)
1.ConnectionString,数据库链接 Web.config <configuration> <connectionStrings> <!-- 数据库 SQL ...
随机推荐
- golang 结合实例更好的理解参数传递和指针
关于参数传递 其实go的参数传递,核心就是一句话:go里所有参数传递都是值传递,既把参数复制一份放到函数里去用. go的函数传参,不管参数是什么类型,都会复制一份,然后新的参数在函数内部被使用. 不像 ...
- vue过滤器微信小程序过滤器和百度智能小程序过滤器
因为最近写了微信小程序和百度小程序,用到了过滤器,感觉还挺好用的,所以就来总结一下,希望能帮到你们. 1. 微信小程序过滤器: 1.1:首先建一个单独的wxs后缀的文件,一般放在utils文件夹里面. ...
- 使用Prerender.io进行网站预加载
我在自己的项目中是采用的前后端分离的技术,前端用的VUE开发,后端是JAVA开发,tomcat部署,nginx转发,但是VUE开发的项目缺点就是不利于SEO,所以针对SEO做了预加载的操作. 决定采用 ...
- cs231n---循环神经网络
1 RNN介绍 (1)一对多,多对一,多对多的任务 传统的神经网络只能处理一对一的任务,而RNN可以处理一对多,多对一,多对多的任务: 其中,一些典型的应用如下: Image Captioning:i ...
- (三)c#Winform自定义控件-有图标的按钮
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- Go_笔试题记录-指针与值类型实现接口的区别
1.如果Add函数的调用代码为: func main() { var a Integer = 1 var b Integer = 2 var i interface{} = &a sum := ...
- python方法的使用
1.函数定义 def 函数名(形参): 函数体 return 返回值 2.函数执行 ...
- 使用MTA HTML5统计API来分析数据
使用MTA HTML5统计API来分析数据 在开发个人博客的时候,用到了腾讯移动分析(MTA),相比其他数据统计平台来说我喜欢她的简洁高效,易上手,同时文档也比较全面,提供了数据接口供用户调用. 在看 ...
- SpringIoC和SpringMVC的快速入门
更多内容,欢迎关注微信公众号:全菜工程师小辉~ Spring的优势? 降低了组件之间的耦合性 ,实现了软件各层之间的解耦 可以使用容易提供的众多服务,如事务管理,消息服务等 容器提供单例模式支持 容器 ...
- Excel VBA 在保留原单元格数据的情况下,将计算的百分比加在后面
算的是红框占绿框的百分比 难点在保留原数据的情况下,把百分比加在后面.通过公式我是不会,但程序实现也不难. 先在Excel中的开发工具中打开visual basic,或者用宏也可以 导入代码文件,代码 ...