日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C#.NET操作數(shù)據(jù)庫通用類(MS SQL Server篇)

 NaturalWill 2014-05-17

下面給出了一個(gè)C#操作MS SQL Server 數(shù)據(jù)庫的通用類,通過該類可以對(duì)數(shù)據(jù)庫進(jìn)行任何操作,包括執(zhí)行SQL語句、執(zhí)行存儲(chǔ)過程。以下是其詳細(xì)實(shí)現(xiàn)過程,希望大家共同修改優(yōu)化之。稍后將介紹如何使用它實(shí)現(xiàn)N層的程序設(shè)計(jì)。

 

配置web.config文件的鏈接參數(shù)

 

<appSettings>
    <!--
  connStr參數(shù)設(shè)置,事例說明:
  (1)Sql server數(shù)據(jù)庫,例如“server=local;database=test;uid=sa;pwd=;”
  (2)Access數(shù)據(jù)庫,例如“data\ex.mdb; user id='admin';Jet OLEDB: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>
  /// 默認(rèn)構(gòu)造函數(shù)
  /// </summary>
  public ConnDB()
  {
   string connStr;
   connStr = System.Configuration.ConfigurationSettings.AppSettings["connStr"].ToString();

   connectionString = connStr;
   Connection = new SqlConnection(connectionString);
  }


  /// <summary>
  /// 帶參數(shù)的構(gòu)造函數(shù)
  /// </summary>
  /// <param name="newConnectionString">數(shù)據(jù)庫聯(lián)接字符串</param>
  public ConnDB(string newConnectionString)
  {
   connectionString = newConnectionString;
   Connection = new SqlConnection(connectionString);
  }


  /// <summary>
  /// 完成SqlCommand對(duì)象的實(shí)例化
  /// </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>
  /// 創(chuàng)建新的SQL命令對(duì)象(存儲(chǔ)過程)
  /// </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>
  /// 執(zhí)行存儲(chǔ)過程,無返回值
  /// </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>
  /// 執(zhí)行存儲(chǔ)過程,返回執(zhí)行操作影響的行數(shù)目
  /// </summary>
  /// <param name="storedProcName"></param>
  /// <param name="parameters"></param>
  /// <param name="rowsAffected"></param>
  /// <returns></returns>
  public int RunProcedure(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把執(zhí)行存儲(chǔ)過程的結(jié)果放在SqlDataReader中
  /// </summary>
  /// <param name="storedProcName"></param>
  /// <param name="parameters"></param>
  /// <returns></returns>
  public SqlDataReader RunProcedure(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把執(zhí)行存儲(chǔ)過程的結(jié)果存儲(chǔ)在DataSet中和表tableName為可選參數(shù)
  /// </summary>
  /// <param name="storedProcName"></param>
  /// <param name="parameters"></param>
  /// <param name="tableName"></param>
  /// <returns></returns>
  public DataSet RunProcedure(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>
  /// 執(zhí)行SQL語句,返回?cái)?shù)據(jù)到DataSet中
  /// </summary>
  /// <param name="sql"></param>
  /// <returns></returns>
  public DataSet ReturnDataSet(string sql)
  {
   DataSet dataSet=new DataSet();
   Connection.Open();
   SqlDataAdapter sqlDA=new SqlDataAdapter(sql,Connection);
   sqlDA.Fill(dataSet,"objDataSet");
   Connection.Close();
   return dataSet;
  }
  

  /// <summary>
  /// 執(zhí)行SQL語句,返回 DataReader
  /// </summary>
  /// <param name="sql"></param>
  /// <returns></returns>
  public SqlDataReader ReturnDataReader(String sql)
  {
   Connection.Open();
   SqlCommand command = new SqlCommand(sql,Connection);
   SqlDataReader dataReader = command.ExecuteReader();

   return dataReader;
  }


  /// <summary>
  /// 執(zhí)行SQL語句,返回記錄數(shù)
  /// </summary>
  /// <param name="sql"></param>
  /// <returns></returns>
  public int 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>
  /// 執(zhí)行SQL語句
  /// </summary>
  /// <param name="sql"></param>
  /// <returns></returns>
  public bool EditDatabase(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>
  /// 關(guān)閉數(shù)據(jù)庫聯(lián)接
  /// </summary>
  public void Close()
  {
   Connection.Close();
  }

 }//end class
}//end namespace

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約