|
private void btn_ExecuteQuery_Click(object sender, EventArgs e) { if (StatusLabel.Text.Length == 0) { StatusLabel.Text = "DefaultQuery.sql"; } if (rich_SqlQuery.Modified) rich_SqlQuery.SaveFile(StatusLabel.Text, RichTextBoxStreamType.PlainText); ProgressBar.Maximum = GetCheckedNodes(tv_left); ; ProgressBar.Minimum = 0; ProgressBar.Value = 0; nresult = 0; tbContorl_DataGrid.TabPages.Clear(); CallRecursive(tv_left, 1); //ProgressBar.Value = ProgressBar.Maximum; }
#endregion private void ExecSqlQuery(object treeNode) { TreeNode _treeNode = (TreeNode)treeNode; Nodedata nodedata = (Nodedata)_treeNode.Tag; DataTable customerTable = new DataTable(); int dbtype = 0; if (rbQuery_DB.Checked) dbtype = 0; else dbtype = 1; SqlConnection connection = new SqlConnection(GetSqlConnectionString(dbtype, nodedata.DBIP)); SqlDataAdapter customersTableAdapter = new SqlDataAdapter(sqlQueryText, connection); try { customersTableAdapter.Fill(customerTable); customerTable.TableName = nodedata.Name; } catch (SqlException sqlerr) { MessageBox.Show(sqlerr.Message); } //添加一个TabPage ThreadPool.QueueUserWorkItem(new WaitCallback(sqlquery_callback), customerTable); //ProgressBar.Value += 1; //tbContorl_DataGrid.Refresh(); }
private void sqlquery_callback(object o) { //DataTable tmp_data = (DataTable)o; tbContorl_DataGrid.Invoke(new tb_CallBack(tb_callback), new object[] { (DataTable)o }); } private delegate void tb_CallBack(DataTable dbGrid); private void tb_callback(DataTable dataTable) { tbContorl_DataGrid.TabPages.Add(dataTable.TableName, dataTable.TableName); DataGridView dbGrid = new DataGridView(); dbGrid.Parent = dbGrid.Parent = tbContorl_DataGrid.TabPages[dataTable.TableName]; dbGrid.Dock = DockStyle.Fill; dbGrid.Name = dataTable.TableName; dbGrid.DataSource = dataTable; ProgressBar.Value++; StatusLabel.Text = string.Format("{0}%", ProgressBar.Value * 100 / ProgressBar.Maximum); statusStrip.Refresh(); dbGrid.Refresh(); } private void ExecRecursiveNode(TreeNode treeNode, int OperatorType) { // Print the node. if (treeNode.Checked && treeNode.Nodes.Count == 0) { switch (OperatorType) { case 0: /****这部分涉及到部分机密,不好意思,不能公开****/ case 1: { sqlQueryText = rich_SqlQuery.Text; Thread t = new Thread(new ParameterizedThreadStart(ExecSqlQuery)); t.Start(treeNode); break; } } //MessageBox.Show("name="+treeNode.Text +"DBIP="+ nodedata.DBIP + "Logincount=" + nodedata.LoginCount.ToString() + "LogiIP="+ nodedata.LoginIP); } // Print each node recursively. foreach (TreeNode tn in treeNode.Nodes) { ExecRecursiveNode(tn, OperatorType); } }
// Call the procedure using the TreeView. private void CallRecursive(TreeView treeView, int OperatorType) { if (treeView == null) return;
TreeNodeCollection nodes = treeView.Nodes; foreach (TreeNode n in nodes) { ExecRecursiveNode(n, OperatorType); } } #endregion public string GetSqlConnectionString(int DBType, string ServerIP) { string ConnectionString; if (DBType == 0) ConnectionString = "user id=sa;data source=" + ServerIP + ";persist security info=True;initial catalog=master;password=tracert"; else ConnectionString = "user id=sa;data source=" + ServerIP + ";persist security info=True;initial catalog=master;password="; return ConnectionString; }
|