Ado.NET SQLHelper(2)
using System;
using System.Data;
using System.Data.SqlClient; namespace RaywindStudio
{
namespace DAL
{
/// <summary>
/// MSSQL数据库操作类
/// </summary>
public static class SqlHelper
{
/// <summary>
/// 执行MSSQL插入表操作,默认列名:ColumnName=ParameterName.Replace("@","")
/// </summary>
/// <param name="TableName">表名称</param>
/// <param name="parameters">SqlParameter</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static int InsertCMD(string TableName, SqlParameter[] parameters,
SqlConnection sqlconn)
{
string sql = "Insert into " + TableName + "(";
for (int i = ; i < parameters.Length; i++)
sql += parameters[i].ParameterName.Replace("@", "") + ",";
sql = sql.Substring(, sql.Length - ) + ") Values(";
for (int j = ; j < parameters.Length; j++)
sql += parameters[j].ParameterName + ",";
sql = sql.Substring(, sql.Length - ) + ")";
try
{
SqlCommand cmd = new SqlCommand(sql, sqlconn);
cmd.Parameters.AddRange(parameters);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("InsertCMD:ExecuteNonQuery\n" + ex.Message);
}
} /// <summary>
/// 执行MSSQL插入表操作,默认列名:ColumnName=ParameterName.Replace("@","")
/// </summary>
/// <param name="TableName">表名称</param>
/// <param name="parameters">SqlParameter</param>
/// <param name="ColumnValues">ColumnValue键值对:弥补SqlParameter无法调用getdate()、year()等内部函数的不足。
/// 前后分别为Column和Value,添加在insert语句的column和value部分</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static int InsertCMD(string TableName, SqlParameter[] parameters,
string[,] ColumnValues, SqlConnection sqlconn)
{
string sql = "Insert into " + TableName + "(";
for (int i = ; i < parameters.Length; i++)
sql += parameters[i].ParameterName.Replace("@", "") + ",";
for (int ii = ; ii < ColumnValues.GetLength(); ii++)
sql += ColumnValues[ii, ] + ",";
sql = sql.Substring(, sql.Length - ) + ") Values(";
for (int j = ; j < parameters.Length; j++)
sql += parameters[j].ParameterName + ",";
for (int jj = ; jj < ColumnValues.GetLength(); jj++)
sql += ColumnValues[jj, ] + ",";
sql = sql.Substring(, sql.Length - ) + ")";
try
{
SqlCommand cmd = new SqlCommand(sql, sqlconn);
cmd.Parameters.AddRange(parameters);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("InsertCMD:ExecuteNonQuery\n" + ex.Message);
}
} /// <summary>
/// 执行MSSQL更新表操作,默认列名:ColumnName=ParameterName.Replace("@","")
/// </summary>
/// <param name="TableName">表名称</param>
/// <param name="parameters">SqlParameter</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <param name="Conditions">查询条件,不需要where,多条件用and分隔,没有条件传入空字串</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static int UpdateCMD(string TableName, SqlParameter[] parameters,
SqlConnection sqlconn, string Conditions)
{
string sql = "Update " + TableName + " Set ";
for (int i = ; i < parameters.Length; i++)
sql += parameters[i].ParameterName.Replace("@", "")
+ "=" + parameters[i].ParameterName + ",";
sql = sql.Substring(, sql.Length - )
+ " Where 1=1 " + (Conditions.Length > ? " and " + Conditions : "");
try
{
SqlCommand cmd = new SqlCommand(sql, sqlconn);
cmd.Parameters.AddRange(parameters);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("UpdateCMD:ExecuteNonQuery\n" + ex.Message);
}
} /// <summary>
/// 执行MSSQL更新表操作,默认列名:ColumnName=ParameterName.Replace("@","")
/// </summary>
/// <param name="TableName">表名称</param>
/// <param name="parameters">SqlParameter</param>
/// <param name="ColumnValues">ColumnValue键值对:弥补SqlParameter无法调用getdate()、year()等内部函数的不足。
/// 前后分别为Column和Value,添加在insert语句的column和value部分</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <param name="Conditions">查询条件,不需要where,多条件用and分隔,没有条件传入空字串</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static int UpdateCMD(string TableName, SqlParameter[] parameters,
string[,] ColumnValues, SqlConnection sqlconn, string Conditions)
{
string sql = "Update " + TableName + " Set ";
for (int i = ; i < parameters.Length; i++)
sql += parameters[i].ParameterName.Replace("@", "")
+ "=" + parameters[i].ParameterName + ",";
for (int j = ; j < ColumnValues.GetLength(); j++)
sql += ColumnValues[j, ] + "=" + ColumnValues[j, ] + ",";
sql = sql.Substring(, sql.Length - )
+ " Where 1=1 " + (Conditions.Length > ? " and " + Conditions : "");
try
{
SqlCommand cmd = new SqlCommand(sql, sqlconn);
cmd.Parameters.AddRange(parameters);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("UpdateCMD:ExecuteNonQuery\n" + ex.Message);
}
} /// <summary>
/// 执行MSSQL删除表内数据操作
/// </summary>
/// <param name="TableName">表名称</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <param name="Conditions">查询条件,不需要where,多条件用and分隔,没有条件传入空字串</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static int DeleteCMD(string TableName, SqlConnection sqlconn, string Conditions)
{
string sql = "Delete From " + TableName + " Where 1=1 "
+ (Conditions.Length > ? " and " + Conditions : "");
try
{
SqlCommand cmd = new SqlCommand(sql, sqlconn);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("DeleteCMD:ExecuteNonQuery\n" + ex.Message);
}
} /// <summary>
/// Select查表
/// </summary>
/// <param name="SqlString">一条完整、直接执行的select语句</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>DataTable</returns>
public static DataTable SelectTable(string SqlString, SqlConnection sqlconn)
{
using (DataTable dt = new DataTable())
{
using (SqlDataAdapter da = new SqlDataAdapter(SqlString, sqlconn))
{
try
{
da.Fill(dt);
return dt;
}
catch (Exception ex)
{
throw new Exception("SelectTable:\n" + ex.Message);
}
}
}
} /// <summary>
/// Select查值
/// </summary>
/// <param name="SqlString">一条完整、直接执行的select语句</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>ExecuteScalar</returns>
public static object SelectValue(string SqlString, SqlConnection sqlconn)
{
try
{
SqlCommand cmd = new SqlCommand(SqlString, sqlconn);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw new Exception("SelectValue:\n" + ex.Message);
}
} /// <summary>
/// 执行存储过程,无返回值
/// </summary>
/// <param name="sqlString">存储过程执行语句,需包含Exec </param>
/// <param name="parameters">SqlParameter</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static void ExecProcNonReturn(string sqlString, SqlParameter[] parameters, SqlConnection sqlconn)
{
try
{
SqlCommand cmd = new SqlCommand(sqlString, sqlconn);
cmd.Parameters.AddRange(parameters);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("ExecProcNonReturn:ExecuteNonQuery\n" + ex.Message);
}
} /// <summary>
/// 执行存储过程,并直接返回执行的结果
/// </summary>
/// <param name="sqlString">存储过程执行语句,需包含Exec </param>
/// <param name="parameters">SqlParameter</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static object ExecProc(string sqlString, SqlParameter[] parameters, SqlConnection sqlconn)
{
try
{
SqlCommand cmd = new SqlCommand(sqlString, sqlconn);
cmd.Parameters.AddRange(parameters);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw new Exception("ExecProc:ExecuteScalar\n" + ex.Message);
}
} /// <summary>
/// 执行存储过程,带一个返回参数并返回此参数的执行结果
/// </summary>
/// <param name="sqlString">存储过程执行语句,需包含Exec </param>
/// <param name="parameters">SqlParameter</param>
/// <param name="parameter_out">SqlParameter.Direction = ParameterDirection.Output;</param>
/// <param name="sqlconn">一个SQL连接</param>
/// <returns>ExecuteNonQuery执行结果</returns>
public static object ExecProc(string sqlString, SqlParameter[] parameters,
SqlParameter parameter_out, SqlConnection sqlconn)
{
try
{
SqlCommand cmd = new SqlCommand(sqlString, sqlconn);
cmd.Parameters.AddRange(parameters);
cmd.Parameters.Add(parameter_out);
if (sqlconn.State != ConnectionState.Open)
sqlconn.Open();
cmd.ExecuteNonQuery();
return parameter_out.Value;
}
catch (Exception ex)
{
throw new Exception("ExecProc:ExecuteNonQuery\n" + ex.Message);
}
}
}
}
}
Ado.NET SQLHelper(2)的更多相关文章
- C# ADO基础 SqlHelper
class SqlHelper { //这个是将连接数据库的字符串写到配置文件中的 private static string connStr = ConfigurationManager.Conne ...
- ADO.NET sqlHelper类(DBHelper类)
1.配置文件 <connectionStrings> <add name="constr" connectionString="Data Source= ...
- C# WPF 连接数据库Sqlhelper类
从视频上学习到的WPF连接数据库的方法 需要配置一个 configuration 文件,包含 SQL instance 的相关信息 using System; using System.Collect ...
- ADO.NET封装的SqlHelper
参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...
- ADO.NET复习——自己编写SqlHelper类
今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...
- 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...
- ADO.Net和SqlHelper封装
1.什么是ADO.Net 简单来讲,ADO.NET是用于和数据源打交道的.Net结束,是一组向.NET程序员公开数据访问服务的类 2.ADO.NET的组成部分和对象模型 (1)ADO.NET的两个 ...
- 基于ADO.NET的SqlHelper类
1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: ...
- 【ADO.NET】6、SQLHelper简单封装
using System.Data.SqlClient;using System.Configuration;引用:System.Configuration 连接字符串放到配置文件中 新建一个类,写如 ...
随机推荐
- IDEA中使用GsonFormat
版本:IDEA Community 2019.2.2 说明:GsonFormat是一个可以直接将Json对象转化为Java类的插件 流程:安装GsonFormat插件=>新建一个空类Book=& ...
- 从零构建以太坊(Ethereum)智能合约到项目实战——第23章 从零构建和部署去中心化投票App,decentralization Voting Dapp
P90 .1-从零构建和部署去中心化投票App-01 P91 .2-从零构建和部署去中心化投票App-02 P92 .3-从零构建和部署去中心化投票App-03 参考博文:http://liyuech ...
- 51nod 1449:砝码称重
1449 砝码称重 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 取消关注 现在有好多种砝码,他们的重量是 w0,w1 ...
- AVL-Tree (平衡二叉树)
看到网上AVL-Tree大多数都是用相同的实现方式 —— 递归进行插入.删除.维护平衡等,而我比较喜欢用带父指针的数据结构,于是想了一下午,用C实现了一个迭代版的. 由于没有暂时没有好的画二叉树的工具 ...
- 记录一次Nginx使用第三方模块fair导致的线上故障排错
一.问题 今天发现有一台服务器的内存飙升,然后有预警,立即排查,发现该服务内存使用达到了 2G ,询问开发,当天是否有活动,被告知没有,登陆 Pinpoint 发现该服务是有两台机器,并且所有的访问都 ...
- 傅盛读书笔记:下一个Moonshot是什么?
猎豹移动CEO 傅盛 九月底,我有幸在硅谷拜访了苹果前CEO斯卡利.老人如今已经75岁高龄,但看起来仍充满活力.他花了一上午的时间跟我们沟通,非常谦和.平等.坦诚,给我留下了很深的印象.末了,给我们介 ...
- vim学习--usr03 moving around
Word movement 小写的"w""ge""e""b" w表示向后移动到一个单词开头 ge表示向前移动到一个单词末 ...
- centos7-django(python3)环境搭建
最小化安装centos7 安装epel-release 安装python34 安装pip3 通过pip3安装django 坑 epel(extra package for enterprise lin ...
- JDBC和连接池
JDBC 所有的数据库操作框架都是用在JDBC的基础上做多次封装的,因为JDBC的操作很复杂 引入Jar包 连接数据库操作 书写sql语句,传参 查询,取值 关闭连接 //1.注册驱动(静态方法)(包 ...
- PCA主成分分析算法的数学原理推导
PCA(Principal Component Analysis)主成分分析法的数学原理推导1.主成分分析法PCA的特点与作用如下:(1)是一种非监督学习的机器学习算法(2)主要用于数据的降维(3)通 ...