111,098
社区成员




//开始提取数据
private void btnStartExtract_Click(object sender, EventArgs e)
{
try
{
if (methodList.Count==0)
{
return;
}
this.lblDescription.Text = "正在准备提取数据...";
foreach (ExtractDataMethodClass methodItem in methodList)
{
if (methodItem.ISExcute)
{
this.lblDescription.Text= "正在执行" + methodItem.Name;
Assembly asmb = Assembly.LoadFrom(Application.StartupPath + "\\" + methodItem.DLLName);
//表示创建一个类的实例
object intance = asmb.CreateInstance(methodItem.ClassName);
if (DataExtract_SystemSetHelper.Instance.ISIncreaseMentData)
{
//执行增量提取方法
(intance as IDataExctaction).ExtractIncrementData(progressBar1,this.lblDescription);
}
else
{
//执行全量提取方法
(intance as IDataExctaction).ExtractFullData(progressBar1,this.lblDescription);
}
}
}
MessageBox.Show("完成", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
/// <summary>
/// 提取全量库
/// </summary>
/// <returns></returns>
public bool ExtractFullData(ProgressBar bar,Label lab)
{
//略过不必要的信息。。。。
//提取业务表的基本信息
int InfoPagecount = DataCount / 50000 + 1;//基本信息总页数
int successcount = 0;//成功更新到数据中心的记录
lab.Text = "正在提取地籍登记卡数据库基本信息...";
//分页提取数据库数据
for (int i = 0; i < InfoPagecount; i++)
{
Application.DoEvents();
int pageindex = i + 1;
//提取要插入到B库的数据 这个时候也会假死但是时间很短
DataTable dt = OracleHelper.Instance.GetPageTable("Cadastral_DJK", lst, pagewhere, "TBRQ desc", pageindex, 50000);
//批量插入数到B库 就是在执行这个方法的时候界面会假死 一直到插入数据完成
int result = ExtractData(dt, bar, lab, successcount, 0);
lab.Text = "正在更新地籍登记卡数据库基本信息到综合搜索库...";
int zhss = ExtractDataSearch(dt);
successcount += result;
}
return true;
}
/// <summary>
/// 更新基本信息到数据中心
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private int ExtractData(DataTable dt,ProgressBar bar,Label lab,int rownum,int type)
{
try
{
#region MyRegion
Dictionary<string, object[]> columnRowData = new Dictionary<string, object[]>();
DC_DJ_DJK djk = new DC_DJ_DJK();
TableInfoDictionary.GetTableInfo(djk);
Type typeDCDJDJK = djk.GetType();
PropertyInfo[] proInfosDCDJDJK = typeDCDJDJK.GetProperties();
int leng = dt.Rows.Count;
foreach (PropertyInfo item in proInfosDCDJDJK)
{
string name = item.Name;
if (item.PropertyType.Name != "Byte[]" || name == "DJKID")
{
if (name != "DJH")
{
object[] value = new object[leng];
columnRowData.Add(name, value);
}
}
}
int num = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
Application.DoEvents();
rownum +=1;
bar.Value++;
lab.Text = "正在提取第" + rownum + "条数据...";
foreach (PropertyInfo item in proInfosDCDJDJK)
{
string name = item.Name;
if (dt.Columns.Contains(name))
{
object value = dt.Rows[i][name];
if (item.PropertyType.Name == "DateTime" && value == DBNull.Value)
{
value = DateTime.MinValue;
}
columnRowData[name].SetValue(value, num);
}
}
num++;
}
#endregion
lab.Text = "正在更新数据到监管平台...";
int result = 0;
if (type == 0)
{
//批量插入数据到B数据库 此时界面假死 一直到该句代码执行完成
result = OracleHelper.Instance.BatchInsert("DC_DJ_DJK", columnRowData);
}
else
{
//批量更新数据到B数据库
result = OracleHelper.Instance.BatchUpdate("DC_DJ_DJK","DJKID",columnRowData);
}
return result;
}
catch (Exception ex)
{
error.Append(ex.Message + "\r\n");
return 0;
}
}