当前位置: 代码迷 >> SQL >> C#的SQLHelper打包
  详细解决方案

C#的SQLHelper打包

热度:32   发布时间:2016-05-05 12:21:04.0
C#的SQLHelper封装

using?System;

using?System.Collections.Generic;

using?System.Text;

using?System.Configuration;

using?System.Data;

using?System.Data.SqlClient;

using?System.Collections;

?

namespace?Utility

{

????public?class?SQLHelper

????{

????????//AppSettings

????????public?static?string?App_SQL_DB?=?ConfigurationManager.AppSettings["SqlCon"];

????????//ConnectionStrings

????????//static?string?Conn_SQL_DB?=?ConfigurationManager.ConnectionStrings["SqlCon"].ToString();

?

????????///?<summary>

????????///?增?删?改方法

????????///?</summary>

????????///?<param?name="cmdType"></param>

????????///?<param?name="sql"></param>

????????///?<param?name="parms"></param>

????????///?<returns></returns>

????????public?static?int?ExecuteNonQuery(CommandType?cmdType,?string?sql,?SqlParameter[]?parms)

????????{

????????????int?result?=?-1;

????????????using?(SqlConnection?con?=?new?SqlConnection(App_SQL_DB))

????????????{

????????????????SqlCommand?cmd?=?new?SqlCommand();

????????????????PrepareSQLCommand(cmdType,?sql,?parms,?con,?cmd);

????????????????result?=?cmd.ExecuteNonQuery();

????????????}

????????????return?result;

????????}

?

????????///?<summary>

????????///?提取共同方法

????????///?</summary>

????????///?<param?name="cmdType"></param>

????????///?<param?name="sql"></param>

????????///?<param?name="parms"></param>

????????///?<param?name="con"></param>

????????///?<param?name="cmd"></param>

????????private?static?void?PrepareSQLCommand(CommandType?cmdType,?string?sql,?SqlParameter[]?parms,?SqlConnection?con,?SqlCommand?cmd)

????????{

????????????cmd.Connection?=?con;

????????????if?(con.State?!=?ConnectionState.Open)

????????????????con.Open();

????????????cmd.CommandText?=?sql;

????????????cmd.CommandType?=?cmdType;

????????????if?(parms?!=?null)

????????????????foreach?(SqlParameter?parm?in?parms)

????????????????{

????????????????????cmd.Parameters.Add(parm);

????????????????}

????????}

?

?

????????///?<summary>

????????///?查询

????????///?</summary>

????????///?<param?name="cmdType"></param>

????????///?<param?name="sql"></param>

????????///?<param?name="parms"></param>

????????///?<returns></returns>

????????public?static?SqlDataReader?ExecuteReader(CommandType?cmdType,?string?sql,?SqlParameter[]?parms)

????????{

????????????SqlConnection?con?=?new?SqlConnection(App_SQL_DB);

????????????SqlCommand?cmd?=?new?SqlCommand();

????????????PrepareSQLCommand(cmdType,?sql,?parms,?con,?cmd);

????????????SqlDataReader?reader?=?cmd.ExecuteReader();

????????????return?reader;

????????}

????????///?<summary>

????????///?读取单个值

????????///?结果集中第一行的第一列;如果结果集为空,则为空引用

????????///?</summary>

????????///?<param?name="cmdType"></param>

????????///?<param?name="sql"></param>

????????///?<param?name="parms"></param>

????????///?<returns></returns>

????????public?static?int?ExecuteScalar(CommandType?cmdType,?string?sql,?SqlParameter[]?parms)

????????{

????????????int?result?=?-1;

????????????//连接数据库

????????????using?(SqlConnection?con?=?new?SqlConnection(App_SQL_DB))

????????????{

????????????????//执行

????????????????SqlCommand?cmd?=?new?SqlCommand();

?

????????????????PrepareSQLCommand(cmdType,?sql,?parms,?con,?cmd);

????????????????result?=?(int)cmd.ExecuteScalar();

????????????????return?result;

????????????}

????????}

?

????????///?<summary>

????????///?事务提交多SQL语句的执行

????????///?<param?name="cmdText">sql语句的数组</param>

????????///?<returns>true表示成功,false表示失败</returns>

????????///?</summary>

????????public?static?int?ExecuteNonQuery(ArrayList?cmdText)

????????{

????????????int?flag?=?-1;

????????????using?(SqlConnection?connection?=?new?SqlConnection(App_SQL_DB))

????????????{

????????????????SqlCommand?cmd?=?new?SqlCommand();

?

????????????????//SQLCmd.CommandText?=?null;

????????????????//SQLCmd.CommandType?=?cmdType;

?

????????????????//PrepareSQLCommand(cmdType,?null,?parms,?connection,?SQLCmd);

?

????????????????SqlTransaction?Trans;

????????????????connection.Open();

????????????????Trans?=?connection.BeginTransaction();

????????????????try

????????????????{

????????????????????cmd.Connection?=?connection;

????????????????????cmd.Transaction?=?Trans;

?

????????????????????for?(int?i?=?0;?i?<?cmdText.Count;?i++)

????????????????????{

????????????????????????//SQLCmd.CommandText?=?EscapeString(cmdText[i].ToString());

????????????????????????cmd.CommandText?=?cmdText[i].ToString();

????????????????????????flag?=?cmd.ExecuteNonQuery();

????????????????????}

????????????????????Trans.Commit();

????????????????}

????????????????catch?(Exception?e)

????????????????{

?

????????????????????Trans.Rollback();

????????????????}

????????????????finally

????????????????{

????????????????????connection.Close();

????????????????}

????????????}?return?flag;

?

????????}

?

????????///?<summary>

????????///?执行多条SQL语句的方法

????????///?</summary>

????????///?<param?name="SQLStringList"></param>

????????public?static?void?ExecuteNonQuerySQL(ArrayList?SQLStringList)

????????{

????????????using?(SqlConnection?conn?=?new?SqlConnection(App_SQL_DB))

????????????{

????????????????conn.Open();

????????????????SqlCommand?cmd?=?new?SqlCommand();

????????????????cmd.Connection?=?conn;

????????????????SqlTransaction?tx?=?conn.BeginTransaction();

????????????????cmd.Transaction?=?tx;

????????????????try

????????????????{

????????????????????for?(int?n?=?0;?n?<?SQLStringList.Count;?n++)

????????????????????{

????????????????????????string?strsql?=?SQLStringList[n].ToString();

????????????????????????if?(strsql.Trim().Length?>?1)

????????????????????????{

????????????????????????????cmd.CommandText?=?strsql;

????????????????????????????cmd.ExecuteNonQuery();

????????????????????????}

????????????????????}

????????????????????tx.Commit();

????????????????}

????????????????catch?(System.Data.SqlClient.SqlException?E)

????????????????{

????????????????????tx.Rollback();

????????????????????throw?new?Exception(E.Message);

????????????????}

????????????}

????????}

?

????????///?<summary>

????????///?转义字符

????????///?</summary>

????????///?<param?name="str"></param>

????????///?<returns></returns>

????????public?static?string?EscapeString(string?str)

????????{

????????????//??str?=?str.Replace("[lt",?"<");

????????????//?str?=?str.Replace("[gt",?">");

????????????return?str;

????????}

????}

}

using?System;

using?System.Collections.Generic;

using?System.Linq;

using?System.Text;

using?Model;

using?System.Data.SqlClient;

using?MYASP;

using?System.Data;

?

namespace?DAL

{

????public?class?UsersDAL

????{

????????///?<summary>

????????///?

????????///?</summary>

????????///?<param?name="user"></param>

????????///?<returns></returns>

????????public?int?UsesLogin(Users?user)

????????{

????????????int?result?=?-1;

????????????string?SQL?=?"select?id,username,[email protected][email protected]";

????????????SqlParameter[]?param?=?new?SqlParameter[2];

????????????param[0]?=?new?SqlParameter("@Username",?user.Username);

????????????param[1]?=?new?SqlParameter("@Password",?user.Password);

????????????result?=?SQLDBHelper.ExecuteScalar(CommandType.Text,?SQL,?param);

????????????return?result;

????????}

?

?

?

????????///?<summary>

????????///?添加

????????///?</summary>

????????///?<returns></returns>

????????public?int?AddUsers(Users?user)

????????{

????????????int?result?=?-1;

????????????string?sql?=?"INSERT?INTO?Users(Username,Password)?VALUES(@Username,@Password)";

????????????SqlParameter[]?parms?=?new?SqlParameter[15];

????????????parms[0]?=?new?SqlParameter("@Username",?user.Username);

????????????parms[1]?=?new?SqlParameter("@Password",?user.Password);

????????????result?=?SQLDBHelper.ExecuteNonQuery(CommandType.Text,?sql,?parms);

????????????return?result;

????????}

????}

}

?

?<?xml?version="1.0"?encoding="utf-8"?>

<configuration>

?

??<configSections>

????<section?name="log4net"?type="System.Configuration.IgnoreSectionHandler"/>

??</configSections>

??<!--连接数据库-->

??<appSettings>

????<add??key="SqlCon"?value="Data?Source=JILONGLIANG\MSSERVER2005;Initial?Catalog=CRM;Persist?Security?Info=True;User?ID=sa;Password=admin1988"/>

??</appSettings>

?

??<log4net>

????<!--定义输出到文件中-->

????<appender?name="rollingFile"?type="log4net.Appender.RollingFileAppender,log4net">

??????

?

??????<!--日志生成的路径

????????winformweb的生成日志文件不一样,在生成到项目的日志会生成到项目的Debug目录下

????????E:\ASP.NET\MyApp\MyApp\bin\Debug?

??????-->

??????<param?name="File"??value="log/app"/>

??????<!--日志追加到文件方式-->

??????<param?name="AppendToFile"?value="true"/>

??????<!--是否按日期滚动生成-->

??????<param?name="RollingStyle"?value="Date"/>

??????<!--

??????????动态生成日志文件的文件类型或是后缀名?

??????????<datePattern?value="yyyyMMdd-HH:mm:ss"?/>????????

????????-->

??????<param?name="DatePattern"?value="yyyyMMdd.LOG"/>

??????<!--文件名是否动态生成-->

??????<param?name="StaticLogFileName"?value="false"/>

?

??????<layout?type="log4net.Layout.PatternLayout">

????????<!--<header?name="Header"?value="[Header]?"/>-->

???????

????????<!--每条日志末尾的文字说明-->

????????<footer?value="==================================日志的结尾======================================================"?/>

????????<!--输出格式-->

????????<!--样例:记录时间:2012-07-26?16:02:53,500?线程ID:[3696]?日志级别:DEBUG?出错类:DAL.UsersDAL?property:[(null)]?-?错误描述:你引起了一个错误,错误ID为?Debug1504984943-->

????????<!--<conversionPattern?value="记录时间:%date?线程ID:[%thread]?日志级别:%-5level?出错类:%logger?property:[%property{NDC}]?-?错误描述:%message%newline"?/>-->

????????<conversionPattern?value="%n记录时间:%date%n?线程ID:[%thread]?日志级别:%-5level操作者ID%property{Operator}?操作类型:%property{Action}%n?当前机器名:%property%n?当前机器名及登录用户:%username?%n?记录类:%logger?记录当前类的方法:%location%n?消息描述:%property{Message}%n?异常:%exception?%n?异常信息:%message%newline?%n%n"/>

??????</layout>

????</appender>

?

??

?

????<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->

????<root>

??????<!--文件形式记录日志-->

??????<appender-ref?ref="rollingFile"?/>

??????<!--控制台控制显示日志-->

??????<appender-ref?ref="ConsoleAppender"?/>

??????<!--Windows事件日志-->

??????<appender-ref?ref="EventLogAppender"?/>

??????<!--?如果不启用相应的日志记录,可以通过这种方式注释掉

??????<appender-ref?ref="AdoNetAppender_Access"?/>

??????-->

????</root>

?

??</log4net>

</configuration>