.Net---Sql数据库操作通用类库
来源:互联网 发布:非p2p下载软件 编辑:程序博客网 时间:2024/04/27 03:07
using System;using System.Data;using System.Data.SqlClient;namespace DataBaseOperate{ /// <summary> /// ConnDB 的摘要说明。 /// </summary> public class ConnDB { protected SqlConnection Connection; public string connectionString; /// <summary> /// 默认构造函数 /// </summary> public ConnDB() { string connStr; try { connStr = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ToString(); connectionString = connStr; Connection = new SqlConnection(connectionString); } catch (Exception) { } } /// <summary> /// 带参数的构造函数 /// </summary> /// <param name="newConnectionString">数据库联接字符串</param> public ConnDB(string newConnectionString) { connectionString = newConnectionString; Connection = new SqlConnection(connectionString); } /// <summary> /// 完成SqlCommand对象的实例化-------本函数不需要显示调用 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <returns></returns> private SqlCommand BuildCommand(string storedProcName,IDataParameter[] parameters) { SqlCommand command = BuildQueryCommand(storedProcName,parameters); command.Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null)); return command; } /// <summary> /// 创建新的SQL命令对象(存储过程)----------在BuildCommand函数中使用,不需要显示调用 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <returns></returns> private SqlCommand BuildQueryCommand(string storedProcName,IDataParameter[] parameters) { SqlCommand command = new SqlCommand(storedProcName,Connection); command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } return command; } /// <summary> /// 执行存储过程,无返回值 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> public void RunProcedure_ReturnNull(string storedProcName,IDataParameter[] parameters) { Connection.Open(); SqlCommand command; command=BuildQueryCommand(storedProcName,parameters); command.ExecuteNonQuery(); Connection.Close(); } /// <summary> /// 执行存储过程,返回执行操作影响的行数目 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="rowsAffected"></param> /// <returns></returns> public int RunProcedure_ReturnEffectRows(string storedProcName,IDataParameter[] parameters,out int rowsAffected) { int result; Connection.Open(); SqlCommand command = BuildCommand(storedProcName,parameters); rowsAffected = command.ExecuteNonQuery(); result = (int)command.Parameters["ReturnValue"].Value; Connection.Close(); return result; } /// <summary> /// 重载RunProcedure把执行存储过程的结果放在SqlDataReader中 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <returns></returns> public SqlDataReader RunProcedure_ReturnDataReader(string storedProcName, IDataParameter[] parameters) { SqlDataReader returnReader; Connection.Open(); SqlCommand command = BuildQueryCommand(storedProcName,parameters); command.CommandType = CommandType.StoredProcedure; returnReader = command.ExecuteReader(CommandBehavior.CloseConnection); return returnReader; } /// <summary> /// 重载RunProcedure把执行存储过程的结果存储在DataSet中和表tableName为可选参数 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="tableName"></param> /// <returns></returns> public DataSet RunProcedure_ReturnDataSet(string storedProcName,IDataParameter[] parameters,params string[] tableName) { DataSet dataSet = new DataSet(); Connection.Open(); SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(storedProcName,parameters); string flag; flag = ""; for(int i=0;i<tableName.Length;i++) flag = tableName[i]; if (flag!="") sqlDA.Fill(dataSet,tableName[0]); else sqlDA.Fill(dataSet); Connection.Close(); return dataSet; } /// <summary> /// 执行SQL语句,返回数据到DataSet中 /// </summary> /// <param name="sql"></param> /// <returns></returns> public DataSet ExecSQL_ReturnDataSet(string sql) { DataSet dataSet=new DataSet(); Connection.Open(); SqlDataAdapter sqlDA=new SqlDataAdapter(sql,Connection); sqlDA.Fill(dataSet,"objDataSet"); Connection.Close(); return dataSet; } /// <summary> /// 执行SQL语句,返回 DataReader /// </summary> /// <param name="sql"></param> /// <returns></returns> public SqlDataReader ExecSQL_ReturnDataReader(String sql) { Connection.Open(); SqlCommand command = new SqlCommand(sql,Connection); SqlDataReader dataReader = command.ExecuteReader(); return dataReader; } /// <summary> /// 执行SQL语句,返回结果集的记录数 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int ExecSql_ReturnRecordCount(string sql) { int recordCount = 0; Connection.Open(); SqlCommand command = new SqlCommand(sql,Connection); SqlDataReader dataReader = command.ExecuteReader(); while(dataReader.Read()) { recordCount++; } dataReader.Close(); Connection.Close(); return recordCount; } /// <summary> /// 执行一条非查询的SQL语句 /// </summary> /// <param name="sql"></param> /// <returns></returns> public bool ExecSql_NonQuery(string sql) { bool successState = false; Connection.Open(); //创建事务------------- SqlTransaction myTrans = Connection.BeginTransaction(); SqlCommand command = new SqlCommand(sql,Connection,myTrans); try { command.ExecuteNonQuery(); myTrans.Commit();//-----------提交事务 successState = true; } catch { myTrans.Rollback(); } finally { Connection.Close(); } return successState; } /// <summary> /// 关闭数据库联接 /// </summary> public void Close() { Connection.Close(); } }//end class}//end namespace
以上是代码 ,大多都是改的别人的代码.总体来说没什么难度!注释已经很详细了!其中的IDataParameter接口需要说一下!
从表面上看,IDataParameter[]的实例就是一个IDataParameter的数组。而IDataParameter实际上是不能直接实例化的,所以这种数组其实很不常见,仅仅会出现在函数的入口参数里面。且多以params的形式出现。这样做的好处是令这个函数可以对付所有的数据库。
IDataParameter[]简单的说来,就是可以包含任何数据库参数的数组,这些参数可以是SqlParameter或者OleDbParameter,但是,IDataParameter[]不可以直接从SqlParameter[]转换过来。
下面是三种创建IDataParameter[]的方法:
一、直接构造:
IDataParameter[] parameters = new IDataParameter[]{ sqlparameter1, sqlparameter2, new SqlParameter(...) }
IDataParameter[] parameters = new IDataParameter[]{ sqlparameter1, sqlparameter2, new SqlParameter(...) }
亦可以这样:
IDataParameter[] param = new IDataParameter[3]; param[0]=new SqlParameter("@co_code","PQtech"); param[1]=new SqlParameter("@clnt_type","C"); param[2]=new SqlParameter("@clnt_code","");
二、通过ArrayList转换。
ArrayList paramlist = new ArrayList()
paramlist.Add( sqlparameter1 );
....
....
IDataParameter param = (IDataParameter[]) paramlist.ToArray( typeof( IDataParameter ) );
三、通过其他Parameter类型的数组创建。
SqlParameter[] _param = new SqlParameter[]{ .... }
IDataParameter[] param = new IDataParameter[ _param.Length ];
_param.CopyTo( param, 0 );
以上内容出(改)自:IDataParameter
- .Net---Sql数据库操作通用类库
- SQL数据库通用访问类(ASP.NET)
- C#.NET操作数据库通用类
- asp.net中数据库操作通用类
- ADO.NET通用数据库操作类
- C# SQL数据库操作通用类
- C#操作SQL Server数据库通用类
- C#操作SQL SERVER数据库通用类
- C#.NET操作数据库通用类(MS SQL Server篇)
- .NET通用的数据库操作类(支持多种数据库)
- VB.NET 数据库表通用操作类模块
- C#操作MS SQL Server 数据库的通用类
- C# 链接sql数据库通用类库
- 一个数据库操作通用类库
- .NET操作数据库三个通用代码
- 基于.NET的LINQ to SQL 三层架构开发之数据库操作通用代码
- net SQL数据库连接类 通用
- SQLHelper数据库.net通用类
- 架设证书服务器 及 让IIS启用HTTPS服务
- 设计模式之观察者模式
- java.util.Date和java.sql.Date的区别及应用
- 推荐给初级Java程序员的3本进阶书
- Windows Server2008、IIS7启用CA认证及证书制作完整过程
- .Net---Sql数据库操作通用类库
- 旋转矩阵推导
- hdu 1495Legal or Not(搜索+模拟)
- C语言结构体实例一
- VC中按相对路径打开文件
- Linux中设置服务自启动的三种方式
- uva 348 - Optimal Array Multiplication Sequence
- C++ opencv数学方法判断点是否在三角形内
- 第九周任务一