测试发现前面发的那个功能太简单,不能调用getdate()等内部函数。 
完善后重载了insert和update两个功能,将函数作为字符串传入SQL语句构造,需要的可以试用一下
 
 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)的更多相关文章

  1. C# ADO基础 SqlHelper

    class SqlHelper { //这个是将连接数据库的字符串写到配置文件中的 private static string connStr = ConfigurationManager.Conne ...

  2. ADO.NET sqlHelper类(DBHelper类)

    1.配置文件 <connectionStrings> <add name="constr" connectionString="Data Source= ...

  3. C# WPF 连接数据库Sqlhelper类

    从视频上学习到的WPF连接数据库的方法 需要配置一个 configuration 文件,包含 SQL instance 的相关信息 using System; using System.Collect ...

  4. ADO.NET封装的SqlHelper

    参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...

  5. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  6. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  7. ADO.Net和SqlHelper封装

    1.什么是ADO.Net 简单来讲,ADO.NET是用于和数据源打交道的.Net结束,是一组向.NET程序员公开数据访问服务的类   2.ADO.NET的组成部分和对象模型 (1)ADO.NET的两个 ...

  8. 基于ADO.NET的SqlHelper类

    1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: ...

  9. 【ADO.NET】6、SQLHelper简单封装

    using System.Data.SqlClient;using System.Configuration;引用:System.Configuration 连接字符串放到配置文件中 新建一个类,写如 ...

随机推荐

  1. windows系统下hosts文件的改写(为了测试nginx内网的证书代理,需要做域名解析)

    1. win加R     C:\WINDOWS\system32\drivers\etc 2.打开hosts文件  加入一行  IP为客户机要访问的IP地址  域名也是在nginx中定义好的 3.ct ...

  2. 五 Action访问方法,method配置,通配符(常用),动态

    1 通过method配置(有点low) 建立前端JSP:demo4.jsp <%@ page language="java" contentType="text/h ...

  3. JavaScript 数字

    数字(Number)也称为数值或数. 数值直接量 当数字直接出现在程序中时,被称为数值直接量.在 JavaScript 程序中,直接输入的任何数字都被视为数值直接量. 示例1 数值直接量可以细分为整型 ...

  4. TensorFlow 训练只用cpu

    os.environ["CUDA_VISIBLE_DEVICES"] = ""

  5. 修改vue中的挂载页面(index.html)的路径

    修改vue中的挂载页面(index.html)的路径 2019年03月30日 12:07:12 VegasLemon 阅读数 501    版权声明:本文为博主原创文章,未经博主允许不得转载. htt ...

  6. .Net使用SharpZip解压缩文件

    最近,项目中使用到了上传压缩文件,文件上传到服务器后,肯定要解压,取出其中的文件才能使用,在这里做一个小结,Get这个新技能. 首先在使用NuGet管理程序在项目中添加引用ICSharpCode.Sh ...

  7. UniGUI的SQLite数据库(04)

    1]放FDConnection1和FDQuery1到界面上 一定要 放一个  FDPhysSQLiteDriverLink1到ServerModule上 2]在OnFormCreate事件里写 FDQ ...

  8. express框架安装及中间件原理

    本文主要介绍express中间件的原理,来应对面试. 1.安装express及初始化: npm install express-generator -g   =>   express expre ...

  9. insert和delete底层实现的方式

    operator delete ()全局函数原型: /*operator delete: 该函数最终是通过free来释放空间的*/void operator delete(void *pUserDat ...

  10. Prometheus 学习目录

    Prometheus 介绍 Prometheus 安装 https://www.bookstack.cn/read/prometheus-book/quickstart-why-monitor.md ...