当前位置:文档之家› C#.net操作数据库通用类

C#.net操作数据库通用类

C#.NET操作数据库通用类(MS SQL Server篇)下面给出了一个C#操作MS SQL Server 数据库的通用类,通过该类可以对数据库进行任何操作,包括执行SQL语句、执行存储过程。

以下是其详细实现过程,希望大家共同修改优化之。

稍后将介绍如何使用它实现N层的程序设计。

配置web.config文件的链接参数<appSettings><!--connStr参数设置,事例说明:(1)Sql server数据库,例如“server=local;database=test;uid=sa;pwd=;”(2)Access数据库,例如“data\ex.mdb; user id='admin';JetOLEDB:database password='admin';” --><add key="connStr" value="server=127.0.0.1;database=DbName;uid=sa;pwd=;" /></appSettings>C#代码using System;using System.Data;using System.Data.SqlClient;namespace Com.LXJ.Database{/// <summary>/// ConnDB的摘要说明。

/// </summary>public class ConnDB{protected SqlConnection Connection;private string connectionString;/// <summary>/// 默认构造函数/// </summary>public ConnDB(){string connStr;connStr = System.Configuration.ConfigurationSettings.AppSettings["connStr"].ToString(); connectionString = connStr;Connection = new SqlConnection(connectionString);}/// <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 SqlCommandBuildCommand(string storedProcName,IDataParameter[] parameters) {SqlCommand command = BuildQueryCommand(storedProcName,parameters);command.Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Em pty,DataRowVersion.Default,null));return command;}/// <summary>/// 创建新的SQL命令对象(存储过程)/// </summary>/// <param name="storedProcName"></param>/// <param name="parameters"></param>/// <returns></returns>private SqlCommandBuildQueryCommand(string storedProcName,IDataParameter[] parameters){SqlCommand command = new SqlCommand(storedProcName,Connection);mandType = 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 ExecuteProcedure(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 intRunProcedure(string storedProcName,IDataParameter[] parameters,outintrowsAffected){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 SqlDataReaderRunProcedure(string storedProcName,IDataParameter[] parameters) {SqlDataReaderreturnReader;Connection.Open();SqlCommand command = BuildQueryCommand(storedProcName,parameters); mandType = 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 DataSetRunProcedure(string storedProcName,IDataParameter[] parameters,params string[] tableName){DataSetdataSet = new DataSet();Connection.Open();SqlDataAdaptersqlDA = 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]);elsesqlDA.Fill(dataSet);Connection.Close();return dataSet;}/// <summary>/// 执行SQL语句,返回数据到DataSet中/// </summary>/// <param name="sql"></param>/// <returns></returns>public DataSetReturnDataSet(string sql){DataSetdataSet=new DataSet();Connection.Open();SqlDataAdaptersqlDA=new SqlDataAdapter(sql,Connection);sqlDA.Fill(dataSet,"objDataSet");Connection.Close();return dataSet;}/// <summary>/// 执行SQL语句,返回DataReader/// </summary>/// <param name="sql"></param>/// <returns></returns>public SqlDataReaderReturnDataReader(String sql){Connection.Open();SqlCommand command = new SqlCommand(sql,Connection); SqlDataReaderdataReader = command.ExecuteReader(); returndataReader;}/// <summary>/// 执行SQL语句,返回记录数/// </summary>/// <param name="sql"></param>/// <returns></returns>public intReturnRecordCount(string sql){intrecordCount = 0;Connection.Open();SqlCommand command = new SqlCommand(sql,Connection); SqlDataReaderdataReader = command.ExecuteReader();while(dataReader.Read()){recordCount++;}dataReader.Close();Connection.Close();returnrecordCount;}/// <summary>/// 执行SQL语句/// </summary>/// <param name="sql"></param>/// <returns></returns>public boolEditDatabase(string sql){boolsuccessState = false;Connection.Open();SqlTransactionmyTrans = Connection.BeginTransaction(); SqlCommand command = new SqlCommand(sql,Connection,myTrans); try{command.ExecuteNonQuery();mit();successState = true; }catch{myTrans.Rollback(); }finally{Connection.Close(); } returnsuccessState; }/// <summary>/// 关闭数据库联接/// </summary> public void Close() {Connection.Close(); }}//end class}//end namespace。

相关主题