<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-295  評論-26  文章-1  trackbacks-0

    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace com.hua..li
    {
    ?/// <summary>
    ?/// 數據庫操作
    ?/// </summary>
    ?public class pathDB:pathPage
    ?{

    ??override protected void OnInit(EventArgs e)
    ??{
    ???pathInit();
    ???base.OnInit(e);
    ??}

    ??protected void pathInit()
    ??{
    ???this.ConnectDb();
    ??}

    ??protected void ConnectDb()
    ??{
    ???if(doh == null)
    ???{
    ????System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connString"]);
    ????doh = new com.path.SqlDbOperHandler(conn);
    ???}
    ??}
    ?}
    }
    using System;

    namespace com.hua.li
    ?{
    ??/// <summary>
    ??/// 表示數據庫連接類型。
    ??/// </summary>
    ??public enum DatabaseType:byte{SqlServer,OleDb};
    ??/// <summary>
    ??/// DbOperHandler 的摘要說明。
    ??/// </summary>
    ??public abstract class DbOperHandler
    ??{
    ???/// <summary>
    ???/// 析構函數,釋放申請的資源。
    ???/// </summary>
    ???~DbOperHandler()
    ???{
    ????conn.Close();
    ???}
    ???/// <summary>
    ???/// 表示數據庫連接的類型,目前支持SqlServer和OLEDB
    ???/// </summary>
    ???protected DatabaseType dbType=DatabaseType.OleDb;
    ???/// <summary>
    ???/// 返回當前使用的數據庫連接對象。
    ???/// </summary>
    ???/// <returns></returns>
    ???public System.Data.IDbConnection GetConnection()
    ???{
    ????return conn;
    ???}
    ???/// <summary>
    ???/// 條件表達式,用于在數據庫操作時篩選記錄,通常用于僅需指定表名稱和某列名稱的操作,如GetValue(),Delete()等,支持查詢參數,由AddConditionParameters指定。。
    ???/// </summary>
    ???public string ConditionExpress=string.Empty;
    ???/// <summary>
    ???/// 當前的SQL語句。
    ???/// </summary>
    ???public string SqlCmd=string.Empty;
    ???/// <summary>
    ???/// 當前操作所涉及的數據表名稱。
    ???/// </summary>
    ???protected string tableName=string.Empty;
    ???/// <summary>
    ???/// 當前操作所設計的字段名稱。
    ???/// </summary>
    ???protected string fieldName=string.Empty;
    ???/// <summary>
    ???/// 當前所使用的數據庫連接。
    ???/// </summary>
    ???protected System.Data.IDbConnection conn;
    ???/// <summary>
    ???/// 當前所使用的命令對象。
    ???/// </summary>
    ???protected System.Data.IDbCommand cmd;
    ???/// <summary>
    ???/// 當前所使用的數據庫適配器。
    ???/// </summary>
    ???protected System.Data.IDbDataAdapter da;

    ??
    ???/// <summary>
    ???/// 用于存儲字段/值配對。
    ???/// </summary>
    ???protected System.Collections.ArrayList alFieldItems=new System.Collections.ArrayList(10);
    ???/// <summary>
    ???/// 用于存儲SQL語句中的查詢參數。
    ???/// </summary>
    ???protected System.Collections.ArrayList alSqlCmdParameters=new System.Collections.ArrayList(5);
    ???/// <summary>
    ???/// 用于存儲條件表達式中的查詢參數。
    ???/// </summary>
    ???protected System.Collections.ArrayList alConditionParameters=new System.Collections.ArrayList(5);
    ???/// <summary>
    ???/// 重值該對象,使之恢復到構造時的狀態。
    ???/// </summary>
    ???public void Reset()
    ???{
    ????this.alFieldItems.Clear();
    ????this.alSqlCmdParameters.Clear();
    ????this.alConditionParameters.Clear();
    ????this.ConditionExpress=string.Empty;
    ????this.SqlCmd=string.Empty;
    ????this.cmd.Parameters.Clear();
    ????this.cmd.CommandText=string.Empty;
    ???}
    ???/// <summary>
    ???/// 添加一個字段/值對到數組中。
    ???/// </summary>
    ???/// <param name="_fieldName">字段名稱。</param>
    ???/// <param name="_fieldValue">字段值。</param>
    ???public void AddFieldItem(string _fieldName,object _fieldValue)
    ???{

    ????for(int i=0;i<this.alFieldItems.Count;i++)
    ????{
    ?????if(((DbKeyItem)this.alFieldItems[i]).fieldName==_fieldName)
    ?????{
    ??????throw new ArgumentException("The field name has existed!");
    ?????}
    ????}
    ????this.alFieldItems.Add(new DbKeyItem(_fieldName,_fieldValue));
    ???}
    ???/// <summary>
    ???/// 添加條件表達式中的查詢參數到數組中。注意:當數據庫連接為SqlServer時,參數名稱必須和SQL語句匹配。其它則只需保持添加順序一致,名稱無需匹配。
    ???/// </summary>
    ???/// <param name="_conditionName">條件名稱。</param>
    ???/// <param name="_conditionValue">條件值。</param>
    ???public void AddConditionParameter(string _conditionName,object _conditionValue)
    ???{
    ????for(int i=0;i<this.alConditionParameters.Count;i++)
    ????{
    ?????if(((DbKeyItem)this.alConditionParameters[i]).fieldName==_conditionName)
    ?????{
    ??????throw new ArgumentException("The condition name has existed!");
    ?????}
    ????}
    ????this.alConditionParameters.Add(new DbKeyItem(_conditionName,_conditionValue));
    ???}

    ???/// <summary>
    ???/// 添加SQL語句中的查詢參數到數組中。注意:當數據庫連接為SqlServer時,參數名稱必須和SQL語句匹配。其它則只需保持添加順序一致,名稱無需匹配。
    ???/// </summary>
    ???/// <param name="_paraName">參數名稱。</param>
    ???/// <param name="_paraValue">參數值。</param>
    ???public void AddSqlCmdParameters(string _paraName,object _paraValue)
    ???{
    ????for(int i=0;i<this.alSqlCmdParameters.Count;i++)
    ????{
    ?????if(((DbKeyItem)this.alSqlCmdParameters[i]).fieldName==_paraName)
    ?????{
    ??????throw new ArgumentException("The sqlcmd parameter name has existed!");
    ?????}
    ????}
    ????this.alSqlCmdParameters.Add(new DbKeyItem(_paraName,_paraValue));
    ???}

    ???public bool Exist(string tableName)
    ???{
    ????return this.GetValue(tableName,"count(*)").ToString()!="0";
    ???}
    ???/// <summary>
    ???/// 抽象函數。用于產生Command對象所需的參數。
    ???/// </summary>
    ???protected abstract void GenParameters();
    ???/// <summary>
    ???/// 根據當前alFieldItem數組中存儲的字段/值向指定表中添加一條數據。在該表無觸發器的情況下返回添加數據所獲得的自動增長id值。
    ???/// </summary>
    ???/// <param name="_tableName">要插入數據的表名稱。</param>
    ???/// <returns>返回本數據連接上產生的最后一個自動增長id值。</returns>
    ???public int Insert(string _tableName)
    ???{
    ???
    ????this.tableName=_tableName;
    ????this.fieldName=string.Empty;
    ????this.SqlCmd="insert into "+this.tableName+"(";
    ????string tempValues=" values(";
    ????for(int i=0;i<this.alFieldItems.Count-1;i++)
    ????{
    ?????this.SqlCmd+=((DbKeyItem)alFieldItems[i]).fieldName;
    ?????this.SqlCmd+=",";

    ?????tempValues+="@para";
    ?????tempValues+=i.ToString();

    ?????tempValues+=",";
    ????}
    ????this.SqlCmd+=((DbKeyItem)alFieldItems[alFieldItems.Count-1]).fieldName;
    ????this.SqlCmd+=") ";

    ????tempValues+="@para";
    ????tempValues+=(alFieldItems.Count-1).ToString();

    ????tempValues+=")";
    ????this.SqlCmd+=tempValues;
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????cmd.ExecuteNonQuery();
    ????cmd.CommandText="select @@identity as id";
    ????int autoId=Convert.ToInt32(cmd.ExecuteScalar());
    ????return autoId;
    ???}

    ???/// <summary>
    ???/// 根據當前alFieldItem數組中存儲的字段/值和條件表達式所指定的條件來更新數據庫中的記錄,返回所影響的行數。
    ???/// </summary>
    ???/// <param name="_tableName">要更新的數據表名稱。</param>
    ???/// <returns>返回此次操作所影響的數據行數。</returns>
    ???public int Update(string _tableName)
    ???{
    ????this.tableName=_tableName;
    ????this.fieldName=string.Empty;
    ????this.SqlCmd="update "+this.tableName+" set ";
    ????for(int i=0;i<this.alFieldItems.Count-1;i++)
    ????{
    ?????this.SqlCmd+=((DbKeyItem)alFieldItems[i]).fieldName;
    ?????this.SqlCmd+="=";

    ?????this.SqlCmd+="@para";
    ?????this.SqlCmd+=i.ToString();

    ?????this.SqlCmd+=",";
    ????}
    ????this.SqlCmd+=((DbKeyItem)alFieldItems[alFieldItems.Count-1]).fieldName;
    ????this.SqlCmd+="=";

    ????this.SqlCmd+="@para";
    ????this.SqlCmd+=(alFieldItems.Count-1).ToString();


    ????if(this.ConditionExpress!=string.Empty)
    ????{
    ?????this.SqlCmd=this.SqlCmd+" where "+this.ConditionExpress;
    ????}
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????int effectedLines=this.cmd.ExecuteNonQuery();
    ????return effectedLines;
    ???}

    ???/// <summary>
    ???/// 執行SqlCmd中的SQL語句,參數由AddSqlCmdParameters指定,與ConditionExpress無關。
    ???/// </summary>
    ???/// <returns>返回此次操作所影響的數據行數。</returns>
    ???public int ExecuteSqlNonQuery()
    ???{
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????return cmd.ExecuteNonQuery();
    ???}
    ???/// <summary>
    ???/// 獲取指定表,指定列,指定條件的第一個符合條件的值。
    ???/// </summary>
    ???/// <param name="_tableName">表名稱。</param>
    ???/// <param name="_fieldName">字段名稱。</param>
    ???/// <returns>獲取的值。如果為空則返回null。</returns>
    ???public object GetValue(string _tableName,string _fieldName)
    ???{
    ????this.tableName=_tableName;
    ????this.fieldName=_fieldName;
    ????this.SqlCmd="select "+this.fieldName+" from "+this.tableName;
    ????if(this.ConditionExpress!=string.Empty)
    ????{
    ?????this.SqlCmd=this.SqlCmd+" where "+this.ConditionExpress;
    ????}
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????return cmd.ExecuteScalar();
    ???}
    ???/// <summary>
    ???/// 根據當前指定的SqlCmd獲取DataTable。如果ConditionExpress不為空則會將其清空,所以條件表達式需要包含在SqlCmd中。
    ???/// </summary>
    ???/// <returns>返回查詢結果DataTable。</returns>
    ???public System.Data.DataTable GetDataTable()
    ???{
    ????System.Data.DataSet ds=this.GetDataSet();
    ????return ds.Tables[0];
    ???}
    ???/// <summary>
    ???/// 根據當前指定的SqlCmd獲取DataSet。如果ConditionExpress不為空則會將其清空,所以條件表達式需要包含在SqlCmd中。
    ???/// </summary>
    ???/// <returns>返回查詢結果DataSet。</returns>
    ???public System.Data.DataSet GetDataSet()
    ???{
    ????this.alConditionParameters.Clear();
    ????this.ConditionExpress=string.Empty;
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????System.Data.DataSet ds=new System.Data.DataSet();
    ????this.da.SelectCommand=this.cmd;
    ????this.da.Fill(ds);
    ????return ds;
    ???}
    ???/// <summary>
    ???/// 對指定表,指定字段執行加一計數,返回計數后的值。條件由ConditionExpress指定。
    ???/// </summary>
    ???/// <param name="_tableName">表名稱。</param>
    ???/// <param name="_fieldName">字段名稱。</param>
    ???/// <returns>返回計數后的值。</returns>
    ???public int Count(string _tableName,string _fieldName)
    ???{
    ????this.tableName=_tableName;
    ????this.fieldName=_fieldName;
    ????int count=Convert.ToInt32(this.GetValue(this.tableName,this.fieldName));
    ????count++;
    ????this.cmd.Parameters.Clear();
    ????this.cmd.CommandText=string.Empty;
    ????this.AddFieldItem(_fieldName,count);
    ????this.Update(this.tableName);
    ????return count;
    ???}

    ???/// <summary>
    ???/// 對指定表,指定字段執行減一計數,返回計數后的值。條件由ConditionExpress指定。
    ???/// </summary>
    ???/// <param name="_tableName">表名稱。</param>
    ???/// <param name="_fieldName">字段名稱。</param>
    ???/// <returns>返回計數后的值。</returns>
    ???public int Substract(string _tableName,string _fieldName)
    ???{
    ????this.tableName=_tableName;
    ????this.fieldName=_fieldName;
    ????int count=Convert.ToInt32(this.GetValue(this.tableName,this.fieldName));
    ????if(count>0)count--;
    ????this.cmd.Parameters.Clear();
    ????this.cmd.CommandText=string.Empty;
    ????this.AddFieldItem(_fieldName,count);
    ????this.Update(this.tableName);
    ????return count;
    ???}

    ???/// <summary>
    ???/// 根據ConditionExpress指定的條件在指定表中刪除記錄。返回刪除的記錄數。
    ???/// </summary>
    ???/// <param name="_tableName">指定的表名稱。</param>
    ???/// <returns>返回刪除的記錄數。</returns>
    ???public int Delete(string _tableName)
    ???{
    ????this.tableName=_tableName;
    ????this.SqlCmd="delete from "+this.tableName;
    ????if(this.ConditionExpress!=string.Empty)
    ????{
    ?????this.SqlCmd=this.SqlCmd+" where "+this.ConditionExpress;
    ????}
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????return cmd.ExecuteNonQuery();
    ???}
    ??????????? /// <summary>
    ??????????? /// 函數sendMsg需要 __Receive接受者 如果是系統則為 admin 否則為手機號碼
    ??????????? /// </summary>
    ??????????? /// <param name="_PHONE">手機號碼</param>
    ??????????? /// <param name="_KeyWorld">關鍵字</param>
    ??????????? /// <param name="_INFO">信息的基本內容</param>
    ??????????? /// <param name="_Receive">接受者</param>
    ??????????? /// <returns></returns>
    ??????????? public bool SendMsg(string _PHONE, string _KeyWorld, string _INFO, string _Receive)
    ??????????? {
    ??????????????? bool SendOk;
    ??????????????? if (_PHONE != null || _KeyWorld != null)
    ??????????????? {
    ??????????????????? this.Reset();
    ??????????????????? this.AddFieldItem("PHONE", _PHONE);
    ??????????????????? this.AddFieldItem("KeyWorld", _KeyWorld);
    ??????????????????? this.AddFieldItem("INFO", _INFO);
    ??????????????????? this.AddFieldItem("Receive", _Receive);
    ??????????????????? this.Insert("smsRawRecv").ToString();
    ??????????????????? SendOk = true;
    ??????????????? }
    ??????????????? else
    ??????????????? {
    ??????????????????? SendOk = false;
    ???????????????????
    ??????????????? }
    ??????????????? return SendOk;
    ??????????? }
    ??????????? /// <summary>
    ??????????? ///
    ??????????? /// </summary>
    ??????????? /// <param name="_PHONE"></param>
    ??????????? /// <param name="_KeyWorld"></param>
    ??????????? /// <param name="_INFO"></param>
    ??????????? /// <param name="_Receive"></param>
    ??????????? /// <returns></returns>
    ???????????? //public bool Received(string _PHONE, string _KeyWorld, string _INFO, string _Receive)
    ???????????? //{
    ???????????? //??? bool Received, SendOk;
    ???????????? //??? if (SendOk)
    ???????????? //??? {
    ???????????? //??????? if (_PHONE != null || _KeyWorld != null)
    ???????????? //??????? {
    ???????????? //??????????? this.Reset();
    ???????????? //??????????? this.AddFieldItem("PHONE", _PHONE);
    ???????????? //??????????? this.AddFieldItem("KeyWorld", _KeyWorld);
    ???????????? //??????????? this.AddFieldItem("INFO", _INFO);
    ???????????? //??????????? this.AddFieldItem("Receive", _Receive);
    ???????????? //??????????? this.Insert("smsSended").ToString();
    ???????????? //??????????? Received = true;
    ???????????? //??????? }
    ???????????? //??????? else
    ???????????? //??????? {
    ???????????? //??????????? Received = false;
    ???????????? //??????? }
    ???????????? //??? }
    ???????????? //??? else
    ???????????? //??? {
    ???????????? //??????? Received = false;
    ???????????? //??? }
    ???????????? //}
    ???/// <summary>
    ???/// 審核函數。將指定表,指定字段的值進行翻轉,如:1->0或0->1。條件由ConditionExpress指定。
    ???/// </summary>
    ???/// <param name="_tableName">表名稱。</param>
    ???/// <param name="_fieldName">字段名稱。</param>
    ???/// <returns>返回影響的行數。</returns>
    ???public int Audit(string _tableName,string _fieldName)
    ???{
    ????this.tableName=_tableName;
    ????this.fieldName=_fieldName;
    ????this.SqlCmd="update "+this.tableName+" set "+this.fieldName+"=1-"+this.fieldName;
    ????if(this.ConditionExpress!=string.Empty)
    ????{
    ?????this.SqlCmd=this.SqlCmd+" where "+this.ConditionExpress;
    ????}
    ????this.cmd.CommandText=this.SqlCmd;
    ????this.GenParameters();
    ????return cmd.ExecuteNonQuery();
    ???}

    ???/// <summary>
    ???/// 釋放資源
    ???/// </summary>
    ???public void Dispose()
    ???{
    ????conn.Close();
    ???}
    ??
    ??}

    ??/// <summary>
    ??/// 數據表中的字段屬性,包括字段名,字段值。
    ??/// 常用于保存要提交的數據。
    ??/// </summary>
    ??public class DbKeyItem
    ??{
    ???/// <summary>
    ???/// 構造函數。
    ???/// </summary>
    ???/// <param name="_fieldName">字段名稱。</param>
    ???/// <param name="_fieldValue">字段值。</param>
    ???public DbKeyItem(string _fieldName,object _fieldValue)
    ???{
    ????this.fieldName=_fieldName;
    ????this.fieldValue=_fieldValue.ToString();
    ???}
    ???/// <summary>
    ???/// 字段名稱。
    ???/// </summary>
    ???public string fieldName;
    ???/// <summary>
    ???/// 字段值。
    ???/// </summary>
    ???public string fieldValue;
    ??}
    ?}



    大盤預測 國富論
    posted on 2007-07-27 11:09 華夢行 閱讀(334) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产午夜精品久久久久免费视| 美女露100%胸无遮挡免费观看 | 亚洲精品夜夜夜妓女网| 黄色a级片免费看| 免费在线不卡视频| 四虎一区二区成人免费影院网址| 国产老女人精品免费视频| 亚洲精品无码久久久久久| 日韩激情无码免费毛片| 亚洲中文字幕久久久一区| 色www永久免费视频| 国产成人亚洲综合a∨| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| MM1313亚洲精品无码久久| 亚洲AV网站在线观看| 久久久受www免费人成| 亚洲国产精品国自产拍AV| 99在线观看视频免费| 亚洲人成综合在线播放| 永久免费av无码网站大全| 特级aa**毛片免费观看| 亚洲老妈激情一区二区三区| 日本视频免费高清一本18| 亚洲国产美女精品久久久久| 黄a大片av永久免费| 一区二区视频免费观看| 久久亚洲精品无码AV红樱桃| 黄页网站免费观看| 免费看一级高潮毛片| 久久久久亚洲精品无码蜜桃| 成人免费视频观看无遮挡| 国产精品免费看久久久香蕉| 91天堂素人精品系列全集亚洲| 成年男女男精品免费视频网站| 午夜成人无码福利免费视频| 老汉色老汉首页a亚洲| 免费人成视频x8x8入口| 99久久久国产精品免费牛牛四川| 亚洲人成电影网站免费| 亚洲成色www久久网站夜月| 在线jyzzjyzz免费视频|