⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmain.cpp

📁 通过oci实现的oracle查询分析器功能和可以 尤其对BLOB字段的度曲
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Clipbrd.hpp"
#include "values.h"
#include "Unitmain.h"
#include <stdio.h>
#include <registry.hpp>
#include "Unitcongfig.h"
#include "Unitcfg.h"
#include "Unitjb.h"
#include "Unitgy.h"
#include "Unitjbbj.h"
#include "UnitSqlExecThread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//#pragma link "CSPIN"
#pragma resource "*.dfm"
TFormmain *Formmain;
DWORD Thread1Id=-1,Thread2Id=-1;
HANDLE Thread1Handle,Thread2Handle;
//---------------------------------------------------------------------------
__fastcall TFormmain::TFormmain(TComponent* Owner)
        : TForm(Owner)
{
}
void ManipulateControl(TControl *Control,TShiftState Shift,int X, int Y, int Precision)
{
 Word	 SC_MANIPULATE;
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的最左侧**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if ((X<=Precision) && (Y>Precision) && (Y<Control->Height-Precision))
{
        SC_MANIPULATE = 0xF001;
        Control->Cursor= crSizeWE;
}
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的最右侧**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else
 if ((X>=Control->Width-Precision) && (Y>Precision) && (Y<Control->Height-Precision))
 {
        SC_MANIPULATE  = 0xF002;
        Control->Cursor = crSizeWE;
  }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的最上侧**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else
 if ((X>Precision) && (X<Control->Width-Precision) && (Y<=Precision))
 {
        SC_MANIPULATE  = 0xF003;
        Control->Cursor = crSizeNS;
 }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的左上角**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else if ((X<=Precision) && (Y<=Precision))
 {
        SC_MANIPULATE  = 0xF004;
        Control->Cursor = crSizeNWSE;
 }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的右上角**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else if ((X>=Control->Width-Precision) && (Y<=Precision))
 {
        SC_MANIPULATE  = 0xF005;
        Control->Cursor = crSizeNESW    ;
 }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的最下侧**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else
 if ((X>Precision) && (X<Control->Width-Precision) && (Y>=Control->Height-Precision) )
 {
        SC_MANIPULATE  = 0xF006;
        Control->Cursor = crSizeNS;
  }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的左下角**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else
 if ((X<=Precision) && (Y>=Control->Height-Precision) )
 {
        SC_MANIPULATE  = 0xF007;
        Control->Cursor = crSizeNESW;
 }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的右下角**********************************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else
 if ((X>=Control->Width-Precision) && (Y>=Control->Height-Precision))
 {
        SC_MANIPULATE  = 0xF008;
        Control->Cursor = crSizeNWSE;
  }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //光标在控件的客户区(移动整个控件)******************************************
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 else
 if ((X>5) && (Y>5) &&(X<Control->Width-5) && (Y<Control->Height-5))
 {
   SC_MANIPULATE  = 0xF009;
   Control->Cursor = crSizeAll;
 }
 else
 {
        SC_MANIPULATE = 0xF000;
        Control->Cursor = crDefault;
 };
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  if(Shift.Contains((Classes__1)3))
 {
   ReleaseCapture();
   Control->Perform(WM_SYSCOMMAND, SC_MANIPULATE, 0);
 };

}
//---------------------------------------------------------------------------
void __fastcall TFormmain::SpeedButton1Click(TObject *Sender)
{
  DATABASEHANDLE  DBHandle;
  if (TXDBHandle.envhp!=NULL)
  DBDatabase->DisConnectDataBase(TXDBHandle);
   status = DBDatabase->ConnectDataBase(TXDBHandle);
   if( status >= 0 )
   {
     Querytx->DBHandle   =TXDBHandle;
   }
  else
  {
     ShowMessage( "ConnectDataBase失败\n");
     DBDatabase->DisConnectDataBase(TXDBHandle);
  }

  status = DBDatabase->ConnectDataBase(DBHandle);
  if( status >= 0 )
  {
    TOCIQuery * Query3;
    Query3 = new TOCIQuery();
    Query3->DBHandle   =DBHandle;
    char sql[500];
    int iP,iB;
    DataConnected=false;
    AnsiString tmp ="";
    hs->Clear();
    ys->Clear();
    jbjg->Clear();
    jbm->Clear();
    TTreeNode *node0,*node1,*node2;
    TStringList *tablename = new TStringList();
    TStringList *ztname = new TStringList();
    TStringList *fieldsname = new TStringList();
    Query3->AddSQL(" select  * from user_objects where  object_type='TABLE' ");
    Query3->ExecSQL();
    ztname->Clear();
    while (!Query3->Eof)
    {
       tablename->Add(Query3->GetFieldValueByName("object_NAME")) ;
       ztname->Add(Query3->GetFieldValueByName("status")) ;
       Query3->Next();
       Application->ProcessMessages();
    }
    wls(Sender);


    TreeView1->Items->BeginUpdate() ;
    TreeView1->Items->Clear();
    node0=TreeView1->Items->AddChild(NULL,"表");
    node0->ImageIndex=0;
    node0->SelectedIndex=0;
    for(int i=0;i<tablename->Count;i++)
    {
      fieldsname->Clear();
      node1=TreeView1->Items->AddChild(node0,tablename->Strings[i]);
      jbm->Add("表:"+tablename->Strings[i]);
      jbjg->Add("TABLE*"+tablename->Strings[i]);
      if (ztname->Strings[i]=="VALID")
      {
        node1->ImageIndex=1;
        node1->SelectedIndex=1;
      }
      else
      {
        node1->ImageIndex=3;
        node1->SelectedIndex=3;
      }
      Application->ProcessMessages();
      AnsiString sql=" select COLUMN_NAME from user_TAB_COLUMNS where Table_name="+ QuotedStr(tablename->Strings[i].UpperCase())+" order by Column_id";
      Query3->AddSQL(sql.c_str());
      Query3->ExecSQL();
      while (!Query3->Eof)
      {
         fieldsname->Add(Query3->GetFieldValueByName("COLUMN_NAME")) ;
         Query3->Next();
         Application->ProcessMessages();
      }

      for(int j=0;j<fieldsname->Count;j++)
      {
        node2=TreeView1->Items->AddChild(node1,fieldsname->Strings[j]);
        node2->ImageIndex=2;
        node2->SelectedIndex=2;
        Application->ProcessMessages();
      }
    }

    tablename->Clear();
    ztname->Clear();
    Query3->AddSQL(" select  * from user_objects where  object_type='VIEW'  ");
    Query3->ExecSQL();
    while (!Query3->Eof)
    {
       ztname->Add(Query3->GetFieldValueByName("status")) ;
       tablename->Add(Query3->GetFieldValueByName("object_NAME")) ;
       Query3->Next();
        Application->ProcessMessages();
    }

    node0=TreeView1->Items->AddChild(NULL,"视图");
    node0->ImageIndex=0;
    node0->SelectedIndex=0;
    for(int i=0;i<tablename->Count;i++)
    {
       Application->ProcessMessages();
      fieldsname->Clear();
      node1=TreeView1->Items->AddChild(node0,tablename->Strings[i]);
      jbm->Add("视图:"+tablename->Strings[i]);
      jbjg->Add("VIEW*"+tablename->Strings[i]);
      if (ztname->Strings[i]=="VALID")
      {
        node1->ImageIndex=1;
        node1->SelectedIndex=1;
      }
      else
      {
        node1->ImageIndex=3;
        node1->SelectedIndex=3;
      }

      AnsiString sql=" select COLUMN_NAME from user_TAB_COLUMNS where Table_name="+ QuotedStr(tablename->Strings[i].UpperCase())+" order by Column_id";
      Query3->AddSQL(sql.c_str());
      Query3->ExecSQL();
      while (!Query3->Eof)
      {
         fieldsname->Add(Query3->GetFieldValueByName("COLUMN_NAME")) ;
         Query3->Next();
         Application->ProcessMessages();
      }

      for(int j=0;j<fieldsname->Count;j++)
      {
        node2=TreeView1->Items->AddChild(node1,fieldsname->Strings[j]);
        node2->ImageIndex=2;
        node2->SelectedIndex=2;
         Application->ProcessMessages();
      }
    }

    ztname->Clear();
    AnsiString  sql1=" select  * from user_objects where  object_type='PROCEDURE'";
    Query3->AddSQL(sql1.c_str());
    Query3->ExecSQL();
    if (!Query3->Eof)
    {
      node0=TreeView1->Items->AddChild(NULL,"过程");
      node0->ImageIndex=0;
      node0->SelectedIndex=0;
      while (!Query3->Eof)
      {
         node1=TreeView1->Items->AddChild(node0,Query3->GetFieldValueByName("object_NAME"));
         jbm->Add("过程:"+node1->Text);
         jbjg->Add("PROCEDURE*"+node1->Text);
         String ss=Query3->GetFieldValueByName("status");
         Application->ProcessMessages();
         if (ss.Trim()=="VALID")
         {
           node1->ImageIndex=1;
           node1->SelectedIndex=1;
         }
         else
         {
           node1->ImageIndex=3;
           node1->SelectedIndex=3;
         }
         Query3->Next();
      }
    };

    AnsiString  sql2=" select  * from user_objects where  object_type='FUNCTION'";
    Query3->AddSQL(sql2.c_str());
    Query3->ExecSQL(); ;
    if (!Query3->Eof)
    {
      node0=TreeView1->Items->AddChild(NULL,"自定义函数");
      node0->ImageIndex=0;
      node0->SelectedIndex=0;
      while (!Query3->Eof)
      {
         node1=TreeView1->Items->AddChild(node0,Query3->GetFieldValueByName("object_NAME"));
         String ss=Query3->GetFieldValueByName("status");
         jbm->Add("自定义函数:"+node1->Text);
         jbjg->Add("FUNCTION*"+node1->Text);
         if (ss.Trim()=="VALID")
         {
           node1->ImageIndex=1;
           node1->SelectedIndex=1;
         }
         else
         {
           node1->ImageIndex=3;
           node1->SelectedIndex=3;
         }
         Application->ProcessMessages();
         Query3->Next();
      }
    };


    if (hs->Count>0)
    {
      node0=TreeView1->Items->AddChild(NULL,"系统函数");
      node0->ImageIndex=0;
      node0->SelectedIndex=0;
      for ( int j=0;j<hs->Count;j++)
      {
        node1=TreeView1->Items->AddChild(node0,hs->Strings[j]);
        node1->ImageIndex=1;
        node1->SelectedIndex=1;
        Application->ProcessMessages();
      }

    }
    Query3->AddSQL(" select  * from user_objects where  object_type='PACKAGE'");
    Query3->ExecSQL(); ;
    if (!Query3->Eof)
    {
      node0=TreeView1->Items->AddChild(NULL,"包");
      node0->ImageIndex=0;
      node0->SelectedIndex=0;
      while (!Query3->Eof)
      {
         node1=TreeView1->Items->AddChild(node0,Query3->GetFieldValueByName("object_NAME"));
         jbm->Add("包:"+node1->Text);
         jbjg->Add("PACKAGE*"+node1->Text);
         String ss=Query3->GetFieldValueByName("status");
         if (ss.Trim()=="VALID")
         {
           node1->ImageIndex=1;
           node1->SelectedIndex=1;
         }
         else
         {
           node1->ImageIndex=3;
           node1->SelectedIndex=3;
         }
         Application->ProcessMessages();
         Query3->Next();
      }
    };

    Query3->AddSQL("select  * from syn");
    Query3->ExecSQL(); ;
    if (!Query3->Eof)
    {
      node0=TreeView1->Items->AddChild(NULL,"同意词");
      node0->ImageIndex=0;
      node0->SelectedIndex=0;
      while (!Query3->Eof)
      {

         node1=TreeView1->Items->AddChild(node0,Query3->GetFieldValueByName("synonym_name"));
         node1->ImageIndex=1;
         node1->SelectedIndex=1;
         jbm->Add("同意词:"+node1->Text);
         jbjg->Add("SYNONYM*"+node1->Text);
         node2=TreeView1->Items->AddChild(node1,Query3->GetFieldValueByName("Table_name"));
         node2->ImageIndex=2;
         node2->SelectedIndex=2;
         Application->ProcessMessages();
         Query3->Next();
      }
    };
    Query3->AddSQL("select  * from user_objects where  object_type='SEQUENCE'");
    Query3->ExecSQL(); ;
    if (!Query3->Eof)
    {
      node0=TreeView1->Items->AddChild(NULL,"序列");
      node0->ImageIndex=0;
      node0->SelectedIndex=0;
      while (!Query3->Eof)
      {

         node1=TreeView1->Items->AddChild(node0,Query3->GetFieldValueByName("object_NAME"));
         node1->ImageIndex=1;
         node1->SelectedIndex=1;
         jbm->Add("序列:"+node1->Text);
         jbjg->Add("SEQUENCE*"+node1->Text);
         Application->ProcessMessages();
         Query3->Next();
      }
    };

    AnsiString dd;
    Query3->AddSQL("select  * FROM USER_INDEXES order by table_name,index_name");
    Query3->ExecSQL(); ;
    if (!Query3->Eof)
    {
      node0=TreeView1->Items->AddChild(NULL,"索引");
      node0->ImageIndex=0;
     node0->SelectedIndex=0;
      dd="";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -