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

📄 frmmutiread.cpp

📁 使用OCI类的API函数
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "frmMutiRead.h"
#include "h_oracle.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxClasses"
#pragma link "cxControls"
#pragma link "cxCustomData"
#pragma link "cxData"
#pragma link "cxDataStorage"
#pragma link "cxDBData"
#pragma link "cxEdit"
#pragma link "cxFilter"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridBandedTableView"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridDBBandedTableView"
#pragma link "cxGridDBTableView"
#pragma link "cxGridLevel"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma link "cxContainer"
#pragma link "cxGroupBox"
#pragma link "dxmdaset"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Connected = false;
    m_DBName = "lgjora9i_21";
    m_DBUser = "sys";
    m_DBPwd = "sys";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    //HOracle Oracle;
    AnsiString FErrorString, asMsg;
    lbCon->Caption = "正在连接数据库...";

    if( !Oracle.Connect(m_DBName, m_DBUser, m_DBPwd, true) )
    {
        asMsg = AnsiString("数据库 " + m_DBName + " 连接失败!");
        lbCon->Caption = asMsg;
        Connected = false;
        return;
    }
    asMsg = AnsiString("数据库 " + m_DBName + " 连接成功!");
    lbCon->Caption = asMsg;
    Button1->Enabled = false;
    Button2->Enabled = true;
    Connected = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    if (!Connected)
        return;  

    TableList.clear();
    Oracle.GetTableInfoList(TableList, m_DBName);

    grdTable->DataController->DataSource = NULL;
    grdTable->OptionsView->NoDataToDisplayInfoText = "正在读取表信息...";

    tbTable1->Close();
    tbTable1->Open();

    for (unsigned int i = 0; i < TableList.size(); i++)
    {
        tbTable1->Append();
        tbTable1tbName->Value  = TableList[i].TableName;
        tbTable1tbOwner->Value = TableList[i].TableOwner;
        tbTable1tbSpace->Value = TableList[i].TableSpace;
        tbTable1->Post();
        //GetColInfo(TableList[i].TableName, TableList[i].TableOwner);
    }

    tbTable1->First();
    grdTable->DataController->DataSource = dsTable;
    Button2->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetColInfo(AnsiString tbName, AnsiString tbOwner)
{
    TableCols.clear();
    Oracle.GetTableCol(tbName, tbOwner, TableCols);
    //Oracle.GetTableDataInfo(tbName, tbOwner, TableData);

    //grdCols->DataController->DataSource = NULL;
    //grdCols->OptionsView->NoDataToDisplayInfoText = "正在读取字段信息...";

    tbCols->Close();
    tbCols->Open();
    
    //ProgressBar1->Position = 0;
    //ProgressBar1->Min = 0;
    //ProgressBar1->Max = tbCols1->RecordCount;

    for (unsigned int i = 0; i < TableCols.size(); i++)
    {
        tbCols->Append();
        tbColscolName->Value  = TableCols[i].ColumnName;
        tbColscolType->Value = TableCols[i].DataType;
        tbColscolLen->Value = TableCols[i].DataLength;
        //tbCols1col4->Value = TableData[i].col4;
        tbCols->Post();

        //ProgressBar1->Position++;
    }

    //tbCols->First();
    //grdCols->DataController->DataSource = dsCols;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    AnsiString tbName, tbOwner;
    tbName  = tbTable1tbName->Value;
    tbOwner = tbTable1tbOwner->Value;

    TableCols.clear();
    Oracle.GetTableCol(tbName, tbOwner, TableCols);
    //Oracle.GetTableDataInfo(tbName, tbOwner, TableData);

    grdCols->DataController->DataSource = NULL;
    grdCols->OptionsView->NoDataToDisplayInfoText = "正在读取字段信息...";

    tbCols->Close();
    tbCols->Open();
    
    //ProgressBar1->Position = 0;
    //ProgressBar1->Min = 0;
    //ProgressBar1->Max = tbCols1->RecordCount;

    for (unsigned int i = 0; i < TableCols.size(); i++)
    {
        tbCols->Append();
        tbColscolName->Value  = TableCols[i].ColumnName;
        tbColscolType->Value = TableCols[i].DataType;
        tbColscolLen->Value = TableCols[i].DataLength;
        //tbCols1col4->Value = TableData[i].col4;
        tbCols->Post();

        //ProgressBar1->Position++;
    }

    tbCols1->First();
    grdCols->DataController->DataSource = dsCols;    
}
//---------------------------------------------------------------------------
void __fastcall TForm1::grdTableCustomDrawCell(
      TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
      TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
    AnsiString tbName, tbOwner;
    tbName  = tbTable1tbName->Value;
    tbOwner = tbTable1tbOwner->Value;

    TableCols.clear();
    Oracle.GetTableCol(tbName, tbOwner, TableCols);

    grdCols->DataController->DataSource = NULL;
    grdCols->OptionsView->NoDataToDisplayInfoText = "正在读取字段信息...";

    tbCols1->Close();
    tbCols1->Open();

    for (unsigned int i = 0; i < TableCols.size(); i++)
    {
        tbCols1->Append();
        tbCols1colName->Value  = TableCols[i].ColumnName;
        tbCols1colType->Value = TableCols[i].DataType;
        tbCols1colLen->Value = TableCols[i].DataLength;
        tbCols1->Post();
    }

    tbCols1->First();
    grdCols->DataController->DataSource = dsCols;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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