使用 Hashtable(哈希表)和 IEnumerator 接口 示例
2008-10-09 17:16
288 查看
今天在开发一个同步功能的时候,用到了Hashtable(哈希表)和 IEnumerator 接口,现在记录下来,以便以后学习!
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
namespace Station.StationDataBase.StStation
{
/// <summary>
/// SynchroStationData 的摘要说明。
/// </summary>
public class SynchroStationData : BaseSet.BasePape
{
protected System.Web.UI.WebControls.CheckBoxList chkStation;
protected System.Web.UI.WebControls.Label lblMessage;
protected System.Web.UI.WebControls.ImageButton btnSave;
ArrayList arrList = new ArrayList(); // 记录已经同步过的数据
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
GetSynchroStationInfo();
// 提示信息
lblMessage.Text = "颜色说明:灰色-变电站已经同步完毕;黑色-变电站需要同步!";
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnSave.Click += new System.Web.UI.ImageClickEventHandler(this.btnSave_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <summary>
/// 得到将要同步的变电站信息
/// </summary>
private void GetSynchroStationInfo()
{
BenzClass.Organ objOrgan = new BenzClass.Organ();
BaseSet.SessionValule objGetSession = new Station.BaseSet.SessionValule();
Components.StStation objGetStation = new Components.StStation();
DataSet dsBenz = new DataSet();
DataSet dsStation = new DataSet();
DataView dv;
ListItem objItem;
int intCompanyID;
string strStationID;
string strStationName;
try
{
// 公司ID
intCompanyID = objGetSession.GetCompanyIDBySession();
// 得到Benz中数据
objOrgan.ConnString = DBAccess.DBUtil.GetBasicConnectionString();
dsBenz = objOrgan.OrganShowByOrganBureauID(intCompanyID);
dv = dsBenz.Tables[0].DefaultView;
dv.RowFilter = "f_OrganFlag in (16,64)"; // 16,64表示变电站和其他分类
// 得到变电站中数据
dsStation = objGetStation.StationShow(intCompanyID);
// 将Benz中数据放入哈希表中
Hashtable myList = new Hashtable();
for(int i = 0; i < dv.Count; i++)
{
myList.Add(dv[i]["f_OrganName"].ToString(),dv[i]["f_OrganID"].ToString());
}
// 将数据绑定到CheckBox上
for(IDictionaryEnumerator ie = myList.GetEnumerator(); ie.MoveNext();)
{
objItem = new ListItem();
objItem.Value = ie.Value.ToString();
objItem.Text = ie.Key.ToString();
for(int j = 0; j < dsStation.Tables[0].Rows.Count; j++)
{
strStationName = dsStation.Tables[0].Rows[j]["f_stationname"].ToString();
strStationID = dsStation.Tables[0].Rows[j]["f_stationid"].ToString();
if(strStationName.CompareTo(ie.Key.ToString()) == 0
&& strStationID.CompareTo(ie.Value.ToString()) == 0)
{
objItem.Text = "<font color=/"gray/">" + ie.Key.ToString() + "</font>";
// 记录已经同步过的数据
arrList.Add(ie.Value.ToString());
}
}
chkStation.Items.Add(objItem);
objItem = null;
}
}
catch(System.Exception err)
{
string strError = err.Message.ToString().Trim();
strError = PowerBase.GetOracleCustomErrorInfo(strError);
PowerBase.ShowMessage(Response,strError);
}
}
/// <summary>
/// 变电站数据同步
/// </summary>
private void SynchroData()
{
BaseSet.SessionValule objGetSession = new BaseSet.SessionValule();
Components.StStation objStation = new Components.StStation();
int intCompanyID;
int intStationID;
string strStationName;
bool blnFlag = false;
OracleConnection oraConn = new OracleConnection();
OracleTransaction oraTran = null;
try
{
oraConn.ConnectionString = DBAccess.DBUtil.GetConnectionString();
oraConn.Open();
oraTran = oraConn.BeginTransaction(IsolationLevel.ReadCommitted);
// 公司ID
intCompanyID = objGetSession.GetCompanyIDBySession();
for(int i = 0; i < chkStation.Items.Count; i++)
{
// 判断是否选中
if(chkStation.Items[i].Selected)
{
intStationID = System.Convert.ToInt32(chkStation.Items[i].Value.ToString());
strStationName = chkStation.Items[i].Text.ToString();
// 判断是否数据已经同步过
for(IEnumerator ie = arrList.GetEnumerator();ie.MoveNext();)
{
if(ie.Current.ToString().CompareTo(intStationID.ToString()) == 0)
{
blnFlag = true;
break;
}
}
// 数据同步
if(!blnFlag)
{
objStation.CompanyID = intCompanyID;
objStation.StationID = intStationID;
objStation.StationName = strStationName;
objStation.StationAdd(oraConn,oraTran);
}
}
}
//提交事务
oraTran.Commit();
PowerBase.ShowMessage(Response,"同步成功!");
}
catch(System.Exception err)
{
if (oraTran != null)
{
oraTran.Rollback();
oraTran = null;
}
string strError = err.Message.ToString().Trim();
strError = PowerBase.GetOracleCustomErrorInfo(strError);
PowerBase.ShowMessage(Response,strError);
}
}
/// <summary>
/// 保存事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
// 同步数据
SynchroData();
}
}
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
namespace Station.StationDataBase.StStation
{
/// <summary>
/// SynchroStationData 的摘要说明。
/// </summary>
public class SynchroStationData : BaseSet.BasePape
{
protected System.Web.UI.WebControls.CheckBoxList chkStation;
protected System.Web.UI.WebControls.Label lblMessage;
protected System.Web.UI.WebControls.ImageButton btnSave;
ArrayList arrList = new ArrayList(); // 记录已经同步过的数据
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
GetSynchroStationInfo();
// 提示信息
lblMessage.Text = "颜色说明:灰色-变电站已经同步完毕;黑色-变电站需要同步!";
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnSave.Click += new System.Web.UI.ImageClickEventHandler(this.btnSave_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <summary>
/// 得到将要同步的变电站信息
/// </summary>
private void GetSynchroStationInfo()
{
BenzClass.Organ objOrgan = new BenzClass.Organ();
BaseSet.SessionValule objGetSession = new Station.BaseSet.SessionValule();
Components.StStation objGetStation = new Components.StStation();
DataSet dsBenz = new DataSet();
DataSet dsStation = new DataSet();
DataView dv;
ListItem objItem;
int intCompanyID;
string strStationID;
string strStationName;
try
{
// 公司ID
intCompanyID = objGetSession.GetCompanyIDBySession();
// 得到Benz中数据
objOrgan.ConnString = DBAccess.DBUtil.GetBasicConnectionString();
dsBenz = objOrgan.OrganShowByOrganBureauID(intCompanyID);
dv = dsBenz.Tables[0].DefaultView;
dv.RowFilter = "f_OrganFlag in (16,64)"; // 16,64表示变电站和其他分类
// 得到变电站中数据
dsStation = objGetStation.StationShow(intCompanyID);
// 将Benz中数据放入哈希表中
Hashtable myList = new Hashtable();
for(int i = 0; i < dv.Count; i++)
{
myList.Add(dv[i]["f_OrganName"].ToString(),dv[i]["f_OrganID"].ToString());
}
// 将数据绑定到CheckBox上
for(IDictionaryEnumerator ie = myList.GetEnumerator(); ie.MoveNext();)
{
objItem = new ListItem();
objItem.Value = ie.Value.ToString();
objItem.Text = ie.Key.ToString();
for(int j = 0; j < dsStation.Tables[0].Rows.Count; j++)
{
strStationName = dsStation.Tables[0].Rows[j]["f_stationname"].ToString();
strStationID = dsStation.Tables[0].Rows[j]["f_stationid"].ToString();
if(strStationName.CompareTo(ie.Key.ToString()) == 0
&& strStationID.CompareTo(ie.Value.ToString()) == 0)
{
objItem.Text = "<font color=/"gray/">" + ie.Key.ToString() + "</font>";
// 记录已经同步过的数据
arrList.Add(ie.Value.ToString());
}
}
chkStation.Items.Add(objItem);
objItem = null;
}
}
catch(System.Exception err)
{
string strError = err.Message.ToString().Trim();
strError = PowerBase.GetOracleCustomErrorInfo(strError);
PowerBase.ShowMessage(Response,strError);
}
}
/// <summary>
/// 变电站数据同步
/// </summary>
private void SynchroData()
{
BaseSet.SessionValule objGetSession = new BaseSet.SessionValule();
Components.StStation objStation = new Components.StStation();
int intCompanyID;
int intStationID;
string strStationName;
bool blnFlag = false;
OracleConnection oraConn = new OracleConnection();
OracleTransaction oraTran = null;
try
{
oraConn.ConnectionString = DBAccess.DBUtil.GetConnectionString();
oraConn.Open();
oraTran = oraConn.BeginTransaction(IsolationLevel.ReadCommitted);
// 公司ID
intCompanyID = objGetSession.GetCompanyIDBySession();
for(int i = 0; i < chkStation.Items.Count; i++)
{
// 判断是否选中
if(chkStation.Items[i].Selected)
{
intStationID = System.Convert.ToInt32(chkStation.Items[i].Value.ToString());
strStationName = chkStation.Items[i].Text.ToString();
// 判断是否数据已经同步过
for(IEnumerator ie = arrList.GetEnumerator();ie.MoveNext();)
{
if(ie.Current.ToString().CompareTo(intStationID.ToString()) == 0)
{
blnFlag = true;
break;
}
}
// 数据同步
if(!blnFlag)
{
objStation.CompanyID = intCompanyID;
objStation.StationID = intStationID;
objStation.StationName = strStationName;
objStation.StationAdd(oraConn,oraTran);
}
}
}
//提交事务
oraTran.Commit();
PowerBase.ShowMessage(Response,"同步成功!");
}
catch(System.Exception err)
{
if (oraTran != null)
{
oraTran.Rollback();
oraTran = null;
}
string strError = err.Message.ToString().Trim();
strError = PowerBase.GetOracleCustomErrorInfo(strError);
PowerBase.ShowMessage(Response,strError);
}
}
/// <summary>
/// 保存事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
// 同步数据
SynchroData();
}
}
}
相关文章推荐
- 在JS中使用哈希表(hashTable)
- Java使用PreparedStatement接口及ResultSet结果集的方法示例
- php快递单号查询接口使用示例
- 【龙芯1c库】封装gpio接口和使用示例
- 【龙芯1c库】封装硬件I2C接口和使用示例
- caffe的python接口使用方法示例
- 【龙芯1c库】封装时钟接口和使用示例
- Hessian 接口使用示例总结
- Java类集框架——Map接口(Map.Entry接口 Map常用子类HashMap、Hashtable、TreeMap、WeakHashMap)的使用
- Compareble 接口与Comparator接口使用示例
- Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例
- c#常用集合类使用练习(队列Queue、栈Stack、哈希表Hashtable和动态数组ArrayList)(4):
- Java【集合系列】-11- Hashtable详细介绍(源码解析)和使用示例
- 《GOF设计模式》—单件(Singleton)—Delphi源码示例:单件接口(使用类字段)
- Hashtable详细介绍(源码解析)和使用示例
- android接口定义语言(AIDL)的使用示例
- 使用Python的Bottle框架写一个简单的服务接口的示例
- 使用Python的Bottle框架写一个简单的服务接口的示例
- [转]net中哈希表的使用 Hashtable
- Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例