国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > 綜合 > 正文

一個(gè)數(shù)據(jù)庫(kù)操作類的實(shí)例(一.Command類部分)

2024-07-21 02:23:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
using system;
namespace com.joybase.db
{
/// <summary>
/// 數(shù)據(jù)庫(kù)操作類,通過(guò)這一個(gè)類的對(duì)外接口,可以獲得以下特性:
/// 1.不必區(qū)分?jǐn)?shù)據(jù)庫(kù)類型,而去考慮是使用system.data.sqlclient實(shí)現(xiàn),或者使用system.data.oledb來(lái)實(shí)現(xiàn);
/// 2.可以將sql語(yǔ)句進(jìn)行模式化,比如輸入“select * from tablename where username=? order by ? desc",然后再用建模語(yǔ)句將該語(yǔ)句保持完整;
/// 3.數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)connection pool(該特性是建立在ado.net的基礎(chǔ)上的)
/// 4.支持sql語(yǔ)句的datareader輸出、無(wú)輸出或者dataset輸出;
/// 5.支持ado.net事務(wù)級(jí)處理;
/// 6.支持存儲(chǔ)過(guò)程的輸入及輸出;
/// </summary>
public class command
{
  //最終的sql語(yǔ)句;
  private system.text.stringbuilder m_sql;
  //中間過(guò)程的sql語(yǔ)句數(shù)組
  private string[] m_sqlarr;
  //替代字符串的數(shù)組;
  private string[] m_replacetext;
  //替代字符串的個(gè)數(shù);
  private int m_count;
  //連接類型;
  private system.data.commandtype m_commandtype;
  //在配置文件中用來(lái)配置數(shù)據(jù)庫(kù)連接字符串的標(biāo)簽;
  private string m_connstringsetname;
  /// <summary>
  /// 構(gòu)造方法
  /// </summary>
  /// <param name="p_sql">模式sql語(yǔ)句</param>
  public command(string p_sql)
  {
   if(p_sql==null) throw new exception("error value");
   if(p_sql.trim()=="") throw new exception("error value");
   this.m_sql=new system.text.stringbuilder();
   m_sqlarr=p_sql.split('?');
   m_count=m_sqlarr.length;
   m_replacetext=new string[m_count-1];
   m_connstringsetname="";
   this.m_commandtype=system.data.commandtype.text;
  }
  /// <summary>
  /// 在配置文件中用來(lái)配置數(shù)據(jù)庫(kù)連接字符串的標(biāo)簽,如果不設(shè)置,則將采用“database.connectionstring”作為連接字符串使用
  /// </summary>
  public string connstringsetname
  {
   set
   {
    this.m_connstringsetname=value;
   }
  }
  /// <summary>
  /// 所執(zhí)行命令的類型,即是存儲(chǔ)過(guò)程還是普通sql語(yǔ)句;
  /// </summary>
  public system.data.commandtype commandtype
  {
   set
   {
    this.m_commandtype=value;
   }
  }
  /// <summary>
  /// 以指定的字符串替代在p_loaction位置上的“?”;
  /// </summary>
  /// <param name="p_location">位置索引</param>
  /// <param name="p_instring">欲替代的字符串</param>
  public void setstring(int p_location,string p_instring)
  {
   if(p_instring==null) throw new exception("error value");
   if(p_instring.trim()==null) throw new exception("error value");
   m_replacetext[p_location-1]="'"+p_instring.trim()+"'";
  }
  /// <summary>
  /// 以指定的整數(shù)類型,替代在p_location位置上的"?"
  /// </summary>
  /// <param name="p_location">位置索引</param>
  /// <param name="p_inint">欲替代的整數(shù)</param>
  public void setint(int p_location,int p_inint)
  {
   m_replacetext[p_location-1]=p_inint.tostring();
  }
  /// <summary>
  /// 以指定的長(zhǎng)整數(shù)類型,替代在p_location位置上的"?"
  /// </summary>
  /// <param name="p_location">位置索引</param>
  /// <param name="p_inlong">欲替代的長(zhǎng)整數(shù)</param>
  public void setlong(int p_location,int p_inlong)
  {
   m_replacetext[p_location-1]=p_inlong.tostring();
  }
  /// <summary>
  /// 以指定的時(shí)間,替代在p_location位置上的"?"
  /// </summary>
  /// <param name="p_location">位置索引</param>
  /// <param name="p_indatetime">欲替代的時(shí)間</param>
  public void setdatetime(int p_location,system.datetime p_indatetime)
  {
   m_replacetext[p_location-1]=p_indatetime.tostring();
  }
  /// <summary>
  /// 以系統(tǒng)時(shí)間替代在p_location位置的"?"
  /// </summary>
  /// <param name="p_location">位置索引</param>
  /// <param name="p_onlydate">如果為true,則僅替代到日期,如果為false,則替代到時(shí)間</param>
  public void setdatetime(int p_location,bool p_onlydate)
  {
   if(p_onlydate)
    m_replacetext[p_location-1]=system.datetime.now.date.tostring();
   else
    m_replacetext[p_location-1]=system.datetime.now.tostring();
  }
  
  private string joinsqlstring()
  {
   for(int i=0;i<m_count;i++)
   {
    if(i!=0) this.m_sql.append(m_replacetext[i-1]);
    this.m_sql.append(m_sqlarr[i]);
    
   }
   return this.m_sql.tostring();
  }
  /// <summary>
  /// 執(zhí)行命令并且返回system.data.idatareader結(jié)果的結(jié)果集
  /// </summary>
  /// <returns></returns>
  public system.data.idatareader result()
  {
   system.data.idatareader result=null;
   
   try
   {
    system.data.idbcommand command=provider.getconn(m_connstringsetname).createcommand();
    command.commandtext=this.joinsqlstring();
    command.commandtype=this.m_commandtype;
    command.connection.close();
    command.connection.open();
    command.prepare();
    //if(provider.getconn(m_connstringsetname).state==system.data.connectionstate.closed)
    //provider.getconn(m_connstringsetname).open();
    result=command.executereader();
    //command.connection.close();
    
    //provider.getconn().close();
   }
   catch
   {
    throw new exception("error at execute db command");
   }
   return result;
  }
  /// <summary>
  /// 無(wú)結(jié)果執(zhí)行命令
  /// </summary>
  public void executenoresult()
  {
   try
   {
    system.data.idbcommand command=provider.getconn(m_connstringsetname).createcommand();
    command.commandtext=this.joinsqlstring();
    command.commandtype=this.m_commandtype;
    command.connection.close();
    command.connection.open();
    //if(provider.getconn(m_connstringsetname).state==system.data.connectionstate.closed)
    //provider.getconn(m_connstringsetname).open();
    command.executenonquery();
    
   }
   catch
   {
    throw new exception("error at execute db command");
   }
   
            
  }
}
}
 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西安市| 阜城县| 永和县| 十堰市| 鹿泉市| 东海县| 望奎县| 古田县| 衡山县| 内黄县| 义乌市| 乐清市| 东山县| 吴川市| 长泰县| 贡嘎县| 开原市| 西昌市| 嵊泗县| 安陆市| 安塞县| 长海县| 随州市| 温泉县| 霍林郭勒市| 陈巴尔虎旗| 鄄城县| 岳池县| 蓬安县| 锦屏县| 吉木乃县| 宁波市| 庄河市| 康平县| 景宁| 云浮市| 从江县| 吕梁市| 山东省| 临武县| 庆城县|