public static void toWitsTable(String str, out String tabid) { WitsTable wt = new WitsTable(); DataRow dr; ConcurrentQueue <String> itemIndexs = new ConcurrentQueue <string>(); ConcurrentQueue <String> values = new ConcurrentQueue <string>(); String[] temp; temp = str.Split(dataSep, StringSplitOptions.RemoveEmptyEntries); tabid = temp[0].Substring(0, 2); foreach (String var in temp) { itemIndexs.Enqueue(var.Substring(2, 2)); values.Enqueue(var.Substring(4, var.Length - 4)); } while (itemIndexs.Count > 0 && values.Count > 0) { String itemIndex; String value; itemIndexs.TryDequeue(out itemIndex); values.TryDequeue(out value); dr = wt.NewRow(); dr.ItemArray = new String[] { itemIndex, value }; wt.Rows.Add(dr); } idQueue.Enqueue(tabid); tabQueue.Enqueue(wt); }
private void button_NewDBFile_Click(object sender, EventArgs e) { SQLiteDBHelper _helper = new SQLiteDBHelper(Config.CfgInfo.StaticDB_PATH); string path = Config.CfgInfo.FoldBrowserPath + "\\" + textBox_new_wellname.Text.Trim() + "_" + textBox_new_wellid.Text.Trim() + "_" + textBox_new_welltime.Text.Trim() + ".db3"; _helper.CreateDB(path, "2", "07", getXMLConfig()); WitsTable wt = new WitsTable("APS", "07", getXMLConfig()); }
//根据数据源tempTable取出表号,查字典将curveName和Value值对应,然后写入相应数据库表中 private void ParseTableData(DataTable tempTable, int columnIndex) { if (tempTable == null || tempTable.Rows.Count <= 0) { return; } Dictionary <string, DataTable> curveNameDictionary = new Dictionary <string, DataTable>(); DataTable dataTable = new DataTable(); WitsTable witsTable = new WitsTable(); //取出TableNo List <string> TableNolist = new List <string>(); foreach (DataRow dr in tempTable.Rows) { string value = dr[columnIndex].ToString(); if (!TableNolist.Contains(value)) { TableNolist.Add(value); } } //获取WitsTable用于保存解析后的数据,作为发送给数据库的数据源 foreach (string toolName in m_curveNameDictionary.Keys) { if (m_curveNameDictionary.TryGetValue(toolName, out curveNameDictionary)) { foreach (string tableNo in curveNameDictionary.Keys) { //本次数据,含此表号,继续查询 if (TableNolist.Contains(tableNo)) { if (curveNameDictionary.TryGetValue(tableNo, out dataTable)) { //根据TableNolist中TableNo,取出相应行的"ItemIndex"和"Value" foreach (DataRow drTemp in tempTable.Rows) { //该行第一列值与TableNo一致 if (tableNo == drTemp[columnIndex].ToString()) { //给dataTable赋值,将值与curveName对应 foreach (DataRow dr in dataTable.Rows) { //通过tempTable的index和dataTable的ItemIndex匹配,给dataTable赋值 if (drTemp["ItemIndex"].ToString() == dr["ItemIndex"].ToString()) { dr["Value"] = drTemp[columnIndex + 2]; } } } } foreach (String strKey in m_witsTableDictionary[toolName].Keys) { if (strKey == tableNo) { if (m_witsTableDictionary[toolName].TryGetValue(tableNo, out witsTable)) { DataRow witsRow = witsTable.NewRow(); foreach (DataRow dr in dataTable.Rows) { //两个curveName匹配,给witsTable赋值 if (witsTable.Columns.Contains(dr["curveName"].ToString())) { witsRow[dr["curveName"].ToString()] = dr["Value"]; } } witsTable.Rows.Add(witsRow); Stopwatch sw = new Stopwatch(); sw.Start(); m_dBHelper.InsertWitsData(toolName, tableNo, witsTable); sw.Stop(); long time1 = sw.ElapsedMilliseconds; witsTable.Clear(); } } } } } } } } }
//创建curveName字典和数据库及其表 private void createCurveNameDictionaryAndDB() { //创建数据库 if (m_wellConfig_From.getwellcountPath() == "" || m_wellConfig_From.getwellcountPath() == null) { MessageBox.Show("未配置井路径,请配置!"); return; } String wellcountPath = m_wellConfig_From.getwellcountPath(); String wellcount = m_wellConfig_From.getwellcount(); String filename = wellcount + ".db3"; String dbPath = m_wellConfig_From.creatDirectory(wellcountPath, filename); m_realDBHelper = m_wellConfig_From.getRealDBHelper(); m_realDBHelper.CreateDB(dbPath); //m_realDBHelper.InsertWellInfo(dbPath); m_dBHelper = new SQLiteDBHelper(dbPath); m_dBHelper.CreateDB(dbPath); List <String> serverTableList = new List <string>(); List <String> clientTableList = new List <string>(); DataTable curveNameTable = new DataTable(); List <String> curveNameList = new List <string>(); //获取Server和Client所选仪器及对应选择的表号 Dictionary <String, List <String> > selectServerToolDictionary = m_recConfig_Form.getSelectServerToolDictionary(); Dictionary <String, List <String> > selectClientToolDictionary = m_recConfig_Form.getSelectClientToolDictionary(); //创建曲线字典和wits表 if (selectServerToolDictionary != null) { foreach (String toolName in selectServerToolDictionary.Keys) { if (selectServerToolDictionary.TryGetValue(toolName, out serverTableList)) { //根据toolName创建Wits表字典,供查询index对应的curveName(短助记符) Dictionary <String, DataTable> curveNameDictionary = m_CurveNameDictionary.createDictionary(toolName, serverTableList); m_curveNameDictionary.Add(toolName, m_CurveNameDictionary.createDictionary(toolName, serverTableList)); serverTableList.Clear(); //同一个仪器名下的wits表 Dictionary <String, WitsTable> witsTableDic = new Dictionary <string, WitsTable>(); //创建数据库表和WITS表 foreach (String tableNo in curveNameDictionary.Keys) { if (curveNameDictionary.TryGetValue(tableNo, out curveNameTable)) { for (int i = 0; i < curveNameTable.Rows.Count; i++) { curveNameList.Add(curveNameTable.Rows[i][1].ToString()); } m_dBHelper.CreateTabs(toolName, tableNo, curveNameList); WitsTable witsTable = new WitsTable(toolName, tableNo, curveNameList); witsTableDic.Add(tableNo, witsTable); curveNameTable.Clear(); curveNameList.Clear(); } } m_witsTableDictionary.Add(toolName, witsTableDic); } } } if (selectClientToolDictionary != null) { foreach (String toolName in selectClientToolDictionary.Keys) { if (selectClientToolDictionary.TryGetValue(toolName, out clientTableList)) { //根据toolName创建Wits表字典,供查询index对应的curveName(短助记符) Dictionary <String, DataTable> curveNameDictionary = m_CurveNameDictionary.createDictionary(toolName, clientTableList); m_curveNameDictionary.Add(toolName, m_CurveNameDictionary.createDictionary(toolName, clientTableList)); clientTableList.Clear(); //同一个仪器名下的wits表 Dictionary <String, WitsTable> witsTableDic = new Dictionary <string, WitsTable>(); //创建数据库表和WITS表 foreach (String tableNo in curveNameDictionary.Keys) { if (curveNameDictionary.TryGetValue(tableNo, out curveNameTable)) { for (int i = 0; i < curveNameTable.Rows.Count; i++) { curveNameList.Add(curveNameTable.Rows[i][1].ToString()); } m_dBHelper.CreateTabs(toolName, tableNo, curveNameList); WitsTable witsTable = new WitsTable(toolName, tableNo, curveNameList); witsTableDic.Add(tableNo, witsTable); curveNameTable.Clear(); curveNameList.Clear(); } } m_witsTableDictionary.Add(toolName, witsTableDic); } } } }