private DataTable getQryData() { JTPUBQRDEFMgr defmgr = new JTPUBQRDEFMgr(mgr, ProcessID); JTPUBQRDEFEty ety = defmgr.getEty(this.ID); DataTable dt = null; if (ety.JTPUBQRDEF_TYPE.ToUpper() == "SQL") { string sql = ety.JTPUBQRDEF_SQL + " " + ety.JTPUBQRDEF_WHERE; if (mgr.getDBType(ety.JTPUBQRDEF_DBSRC) == "ORA") { sql = ety.JTPUBQRDEF_ORA + " " + ety.JTPUBQRDEF_WHERE; } dt = getDataTable(sql, ety.JTPUBQRDEF_DBSRC); } else { string[] paramArr = null; string[] valueArr = null; DataTable dtwhere = defmgr.getWhereDt(this.ID); if (dtwhere.Rows.Count > 0) { paramArr = new string[dtwhere.Rows.Count]; valueArr = new string[dtwhere.Rows.Count]; for (int i = 0; i < dtwhere.Rows.Count; i++) { paramArr[i] = dtwhere.Rows[i]["PARAMDEF_NAME"].ToString(); valueArr[i] = ""; } } string proc = ety.JTPUBQRDEF_SQL; if (mgr.getDBType(ety.JTPUBQRDEF_DBSRC) == "ORA") { proc = ety.JTPUBQRDEF_ORA; } dt = WebSvrGetData.getDataTable(ety.JTPUBQRDEF_DBSRC, ety.JTPUBQRDEF_SQL, paramArr, valueArr, mgr); } return(dt); }
private void syncGetDataSet(string processID, long dtcount, string sql, string strOrderKey, WsGetDataClient.WSGetData mgr) { sql = WebSvrGetData.encstr + DesEncrypt.Encrypt(sql); string dbtype = mgr.getDBType(processID); string vssql = ""; if (dbtype == "ora") { vssql = "select * from ( {0} )z1 where rownum>{1} and rownum<={2} "; } else { if (string.IsNullOrEmpty(strOrderKey)) { throw new Exception("数据量过大,请联系开发人员调用异步加载方式!"); } vssql = @"select top {1} * from ( select top {2} * from ({0}) z1 order by {3}) z2 order by {3} desc "; } for (int m = 0; m < loadNum; m++) { long longs = m * WebSvrGetData.pgNum; long longe = (m + 1) * WebSvrGetData.pgNum; if (dbtype == "ora") { sql = string.Format(vssql, sql, longs + "", longe + ""); } else { sql = string.Format(vssql, sql, WebSvrGetData.pgNum, longe + "", strOrderKey); } DataSet dsre = StringToDataSet.getDataSetFromZipDataFormat(mgr.getZipDataFormatByte(processID, sql)); if (ds == null) { ds = dsre.Copy(); } else { foreach (DataRow row in dsre.Tables[0].Rows) { ds.Tables[0].Rows.Add(row.ItemArray); } } } }
//public static void Main() //{ // ThreadDemo demo = new ThreadDemo(1000); // demo.Action(); //} public WebSvrThreadGetData(string psprocessID, long psPgnum, string psSql, string psOrderKey, WsGetDataClient.WSGetData psMgr, frmDevBBShow psFrmshow) { processID = psprocessID; pgnum = psPgnum; sql = psSql; strOrderKey = psOrderKey; mgr = psMgr; frmshow = psFrmshow; string dbtype = mgr.getDBType(processID); string vssql = ""; if (dbtype == "ora") { vssql = "select * from ( {0} )z1 where rownum>{1} and rownum<={2} "; } else { if (string.IsNullOrEmpty(strOrderKey)) { throw new Exception("数据量过大,请联系开发人员调用异步加载方式!"); } vssql = @"select top {1} * from ( select top {2} * from ({0}) z1 order by {3}) z2 order by {3} desc "; } threads = new Thread[pgnum]; for (int m = 0; m < pgnum; m++) { long longs = m * WebSvrGetData.pgNum; long longe = (m + 1) * WebSvrGetData.pgNum; if (dbtype == "ora") { sql = string.Format(vssql, sql, longs + "", longe + ""); } else { sql = string.Format(vssql, sql, WebSvrGetData.pgNum, longe + "", strOrderKey); } threads[m] = new Thread(new ParameterizedThreadStart(getData)); threads[m].Start(sql); } OnNumberClear += new EventHandler(ThreadDemo_OnNumberClear); }
private void ansyncGetDataSet(string processID, long dtcount, string sql, string strOrderKey, WsGetDataClient.WSGetData mgr) { string dbtype = mgr.getDBType(processID); string vssql = ""; string sqlexe = ""; if (dbtype == "ora") { vssql = " select * from (select rownum rn {3} from ( {0} )z1)z2 where rn>{1} and rn<={2} "; } else { if (string.IsNullOrEmpty(strOrderKey)) { throw new Exception("数据量过大,请联系开发人员调用异步加载方式!"); } vssql = @"select top {1} * from ( select top {2} * from ({0}) z1 order by {3}) z2 order by {3} desc "; } if (loadNum > 0) { delArr = new AsyncDelegate[loadNum]; arArr = new IAsyncResult[loadNum]; bool[] blLoadDs = new bool[loadNum]; for (int m = 0; m < loadNum; m++) { blLoadDs[m] = false; long longs = m * WebSvrGetData.pgNum; long longe = (m + 1) * WebSvrGetData.pgNum; if (m == loadNum - 1) { longe = _dtCount; } if (dbtype == "ora") { sqlexe = string.Format(vssql, sql, longs + "", longe + "", FieldStr); } else { sqlexe = string.Format(vssql, sql, Convert.ToString(longe - longs), longe + "", strOrderKey); } sqlexe = WebSvrGetData.encstr + DesEncrypt.Encrypt(sqlexe); WebSvrGetDataAsyncDelegate delobj = new WebSvrGetDataAsyncDelegate(); delArr[m] = new AsyncDelegate(delobj.getData); arArr[m] = delArr[m].BeginInvoke(mgr, processID, sqlexe, null, null); } bool delCompleted = false; while (delCompleted == false) { delCompleted = true; for (int n = 0; n < loadNum; n++) { IAsyncResult ar = arArr[n]; if (!ar.IsCompleted) { delCompleted = false; break; } else { if (!blLoadDs[n]) { blLoadDs[n] = true; DataSet dsre = delArr[n].EndInvoke(ar); ds.Merge(dsre); } } } Thread.Sleep(10); } } }