自己常用到的自定义公共类(已测试通过)

using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.IO;

/*

* AUTHOR:ZHANGLEI

* CREATE DATE:2007.1.5

* 功能:BLL层,实现了数据库操作的封装

* 并且提供了足够的执行存储过程的参数组合

* DESCRIPTION:本类中用到了方法重载

* ExecuteDataSet方法在本类中实现了四次重载

* */

namespace job_17

{

/// <summary>

/// job17 的摘要说明。

/// </summary>

public class job17

{

private readonly string P_Con=ConfigurationSettings.AppSettings["P_Con"].ToString();

public job17()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

#region "执行任意参数组合的存储过程"

/// <summary>

/// 命令准备操作,提供足够多的参数组合

/// 本类中一个比较重要的方法

/// </summary>

public void preparecommand(SqlConnection myconn,SqlCommand mycomm,SqlTransaction trans,CommandType cmdType,string cmdText,SqlParameter[] param) //注意里面的参数

{

if (myconn.State!=ConnectionState.Open)

{

myconn.Open();

}

mycomm.Connection=myconn;

mycomm.CommandText=cmdText;

if (trans!=null)

{

mycomm.Transaction=trans;

}

mycomm.CommandType=cmdType;

if (param!=null)

{

foreach(SqlParameter parameter in param)

{

mycomm.Parameters.Add(parameter);

}

}

}

/// <summary>

/// 第一个返回DataSet类型的ExecuteDataSet方法

/// </summary>

public DataSet ExecuteDataSet(SqlConnection myconn,CommandType cmdType,string cmdText,SqlParameter[] commandpara)

{

SqlCommand mycomm=new SqlCommand();

preparecommand(myconn,mycomm,(SqlTransaction)null,cmdType,cmdText,commandpara);

SqlDataAdapter adpt=new SqlDataAdapter(mycomm); //调用上方的preparecommand方法

DataSet ds=new DataSet();

adpt.Fill(ds);

mycomm.Parameters.Clear();

return ds;

}

/// <summary>

/// 第二个返回DataSet类型的ExecuteDataSet方法

/// 是在第一个方法的基础上实现,实现了ExecuteDataSet方法的重载

/// </summary>

public DataSet ExecuteDataSet (string connstr,CommandType cmdType,string cmdText,SqlParameter[] cmdpara)//方法重载,在第一种的基础上重载,以便提供足够多的参数组合

{

using(SqlConnection myconn=new SqlConnection(connstr))

{

return ExecuteDataSet(myconn,cmdType,cmdText,cmdpara);

}

}

/// <summary>

/// 第三个返回DataSet类型的ExecuteDataSet方法

/// 提供使用存储过程时不带参数的组合

/// </summary>

public DataSet ExecuteDataSet(SqlConnection myconn,CommandType cmdType,string cmdText)

{

return ExecuteDataSet(myconn,cmdType,cmdText,(SqlParameter[])null);

}

/// <summary>

/// 第四个返回DataSet类型的ExecuteDataSet方法

/// 提供使用存储过程时不带参数的组合

/// </summary>

public DataSet ExecuteDataSet (string connstr,CommandType cmdType,string cmdText)

{

return ExecuteDataSet(connstr,cmdType,cmdText,(SqlParameter[])null);

}

#endregion

#region "执行返回结果的sql语句"

/// <summary>

/// 返回结果的类型为DataTable

/// </summary>

public DataTable ExecuteDataTablesql(string sql)

{

SqlConnection myconn=new SqlConnection(P_Con);

SqlDataAdapter adpt=new SqlDataAdapter(sql,myconn);

DataSet ds=new DataSet();

adpt.Fill(ds);

return  ds.Tables[0];

}

/// <summary>

/// 返回结果的类型为SqlDataReader

/// </summary>

public SqlDataReader ExecuteDataReadersql(string sql)

{

SqlConnection myconn=new SqlConnection(P_Con);

SqlDataReader dr=null;

SqlCommand mycomm=new SqlCommand(sql,myconn);

try

{

myconn.Open();

dr=mycomm.ExecuteReader();

}

catch

{

//    StreamWriter sw=new StreamWriter(@"c:\err.txt",true,System.Text.Encoding.GetEncoding("GB2312"));

//    sw.WriteLine("============================出错信息==========================");

//    sw.WriteLine("出错时间:"+DateTime.Now.ToString()+"");

//    sw.WriteLine(ex.ToString());

//    sw.Close();

throw;

}

return dr;

}

/// <summary>

/// 返回结果的类型为DataSet

/// </summary>

public DataSet ExecutesqlDS(string sql)

{

SqlConnection myconn=new SqlConnection(P_Con);

SqlDataAdapter adpt=new SqlDataAdapter (sql,myconn);

DataSet ds=new DataSet();

adpt.Fill(ds);

return ds;

}

#endregion

#region "执行不返回结果的sql语句"

/// <summary>

/// 执行不返回结果的sql语句

/// </summary>

public void ExecuteNonsql(string sql)

{

SqlConnection myconn=new SqlConnection(P_Con);

SqlCommand mycomm=new SqlCommand(sql,myconn);

try

{

myconn.Open();

mycomm.ExecuteNonQuery();

myconn.Close();

}

catch(Exception e)

{

//   StreamWriter sw=new StreamWriter(@"c:\err.txt",true,System.Text.Encoding.GetEncoding("GB2312"));

//    sw.WriteLine("============================出错信息==========================");

//    sw.WriteLine("出错时间:"+DateTime.Now.ToString()+"");

//    sw.WriteLine(e.ToString());

//    sw.Close();

throw new Exception(e.Message,e);

}

}

#endregion

#region "启用带事务的sql语句如(insert,update)"

/// <summary>

/// 使用事务处理

/// </summary>

public void ExecuteTransql(string sql)

{

SqlConnection myconn=new SqlConnection(P_Con);

SqlCommand mycomm=new SqlCommand(sql,myconn);

SqlTransaction trans=null;

try

{

myconn.Open();

trans=myconn.BeginTransaction();

mycomm.Transaction=trans;

mycomm.ExecuteNonQuery();

trans.Commit();

}

catch(Exception ex)

{

trans.Rollback();

throw new Exception(ex.Message,ex);

}

}

#endregion

}

}

(0)

相关推荐

  • 自己常用到的自定义公共类(已测试通过)

    using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.IO; /* * AUTHOR:ZHANGLEI * CREATE DATE:2007.1.5 * 功能:BLL层,实现了数据库操作的封装 * 并且提供了足够的执行存储过程的参数组合 * DESCRIPTION:本类中用到了方法重载 * ExecuteDataSet方法在本类中实现了四次重载

  • 常用JavaScript代码提示公共类封装

    希望对大家有帮助! 复制代码 代码如下: using System; using System.Web; namespace Jake.PublicJS { /// <summary> /// Summary description for PublicJS /// </summary> public class PublicJS { public PublicJS() { // // TODO: Add constructor logic here // } /// <su

  • Java常用类库Apache Commons工具类说明及使用实例详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

  • Java 枚举类和自定义枚举类和enum声明及实现接口的操作

    1.枚举类 注: JDK1.5之前需要自定义枚举类 JDK 1.5 新增的 enum 关键字用于定义枚举类 若枚举只有一个成员, 则可以作为一种单例模式的实现方式 1.枚举类的属性 1.枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰 2.枚举类的使用 private final 修饰的属性应该在构造器中为其赋值 3.若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数 2.自定义枚举类 如何自定义枚举类的方法写在注释里 //自定义枚举类 c

  • Zend Framework自定义Helper类相关注意事项总结

    本文讲述了Zend Framework自定义Helper类相关注意事项.分享给大家供大家参考,具体如下: 编写自定义的Helper类 编写自定义的Helper类很容易,只要遵循以下几个原则即可: ① 类名必须是 Zend_View_Helper_*,*是helper的名称.例如,你在写一个名为"specialPurpose"的类,类名将至少是"SpecialPurpose",另外你还应该给类名加上前缀,建议将"View_Helper"作为前缀的一

  • Java用自定义的类作为HashMap的key值实例

    这是Java中很经典的问题,在面试中也经常被问起.其实很多书或者文章都提到过要重载hashCode()和equals()两个方法才能实现自定义键在HashMap中的查找,但是为什么要这样以及如果不这样做会产生什么后果,好像很少有文章讲到,所以写这么一篇来说明下. 首先,如果我们直接用以下的Person类作为键,存入HashMap中,会发生发生什么情况呢? public class Person { private String id; public Person(String id) { thi

  • Android编程中常用适配器及自定义适配器用法实例分析

    本文实例讲述了Android编程中常用适配器及自定义适配器用法.分享给大家供大家参考,具体如下: 一.适配器. 顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示.可以看作是界面数据绑定的一种理解.它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等.适配器就像显示器,把复杂的东西按人可以接受的方式来展现. 那么适配器是怎么处理得到的数据,并把它显示出来的呢.其实很简单,说白了适配器它也是一个类,在类里面它实现了父类的这几个方法: publicint getCoun

  • Flask和Django框架中自定义模型类的表名、父类相关问题分析

    本文实例分析了Flask和Django框架中自定义模型类的表名.父类相关问题.分享给大家供大家参考,具体如下: 一. Flask和Django中定义表名(执行迁移后生成)的方式和flask是不同的: 1. Django中表名的定义方式,以代码为例说明 class User(AbstractUser): # 继承自认证系统模型类 """用户模型类""" mobile = modles.CharField(max_length=11, mix_len

  • C#项目中跨文件调用公共类的实例方法

    C#是一种比较常用的编码工具,而经常因为一些原因会对代码进行分块,那两者之间的相互的调用就非常关键,下面简单说说怎样跨文件调用 首先需要被引用文件中有这个方法,同时该方法必须是public公共的方法 其次需要这个公共的方法在一个公共的方法类中,这个方法类也需要是public 之后把这个相关的文件编译成dll文件 在其他想要调用这个公共方法的地方引用这个dll 在调用这个公共方法的文件开头声明这个命名空间,用Using 之后在具体的方法中实例化这个调用方法的类,然后调用这个类下的方法即可 总结 以

  • Laravel框架自定义公共函数的引入操作示例

    本文实例讲述了Laravel框架自定义公共函数的引入操作.分享给大家供大家参考,具体如下: 背景 习惯了 使用 ThinkPHP 框架,有一个公共方法类在代码编写上会快捷很多,所以有必要在此进行配置一番. 测试框架:Laravel 5.5 步骤指导 1. 创建 functions.php 在 app/Helpers/(目录可以自己随便来)下新建一个文件 functions.php,在内部补充如下代码: <?php /** * Created by PhpStorm. * User: moTzxx

随机推荐