C++Builder下如何使用UniDAC控件访问ORACLE数据库

2018-01-08 13:35:44来源:网络收集作者:纳米程序员人点击

分享

阿里云爆款

(同一个世界,同一个梦想,交流学习C++Builder XE10,传承c++builder的魅力!欢迎各地朋友加入我的QQ群484979943,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。)


UniDAC数据库控件是一个通用的数据库访问控件,支持多线程,支持当前流行的所有数据库,最大的优点是发布时不需要打包数据库驱动。软件及版本:C++Builder 10.2.2 tokyo,ORACLE11g


一、安装配置UniDAC


1、(32位)将压缩包解压或者拷贝到C:/ProgramFiles (x86)/Embarcadero/Studio/19.0/UniDAC目录下,运行C:/ProgramFiles (x86)/Embarcadero/Studio/19.0/UniDAC/Source/Delphi25下的make.bat


 (64位)将压缩包解压或者拷贝到C:/Program Files/Embarcadero/Studio/19.0/UniDAC目录下,运行C:/ProgramFiles/Embarcadero/Studio/17.0/UniDAC/Source/Delphi25下的make.bat


编译最后的几个报错提示可以回车忽略.


2、(32位)将C:/Program Files/Embarcadero/Studio/19.0/UniDAC/Bin/Delphi25/Win32下的bpl文件拷贝到C:/Windows/system32下


(64位)将C:/Program Files (x86)/Embarcadero/Studio/19.0/UniDAC/Bin/Delphi25/Win32下的bpl文件拷贝到C:/Windows/SysWOW64下


3、XE10新建项目,project-》options,分别添加lib和include目录


(32位)


C:/Program Files(x86)/Embarcadero/Studio/19.0/UniDAC/Include/Delphi25/Win32


C:/Program Files(x86)/Embarcadero/Studio/19.0/UniDAC/Lib/Delphi25/Win32


 (64位)


C:/Program Files/Embarcadero/Studio/19.0/UniDAC/Include/Delphi25/Win32


C:/Program Files/Embarcadero/Studio/19.0/UniDAC/Lib/Delphi25/Win32


4、Component-》Installpackages添加bpl文件


(64位)在C:/Windows/SysWOW64目录下


(32位)在C:/Windows/System32目录下


 dclcrcontrols250.dpl


dcldac250.bpl


dclunidac250.bpl


dclunidacfmx250.bpl


二、创建项目添加控件

定义全局变量


AnsiString dbIp="22.36.12.17",dbSid="ORCL",dbUser="test",dbPass="test",dbPort="1521",mySql,rowId;


1、主窗口命名为FormMain,摆放UniConnection、UniQuery、UniDataSource、OracleUniProvider、DBGrid、Button控件.


C++Builder下如何使用UniDAC控件访问ORACLE数据库


DBGrid1的DataSource设为UniDataSource1


UniDataSource1的DataSet设为UniQuery1


UniQuery1的Connection属性设为UniConnection1


UniConnection1的ProviderName设为Oracle,LoginPrompt设为False


参考前面“一、3”:XE10新建项目,project-》options,分别添加lib和include目录


2、在FormMain的OnActivate事件中打开数据库


void __fastcall TFormMain::FormActivate(TObject *Sender)
{
UniConnection1->Disconnect();
UniConnection1->ProviderName="Oracle";
UniConnection1->SpecificOptions->Add("direct=true");
//UniConnection1->SpecificOptions->Add("Charset=ZHS16GBK");
UniConnection1->Username=dbUser;
UniConnection1->Password=dbPass;
UniConnection1->Server=dbIp+":"+dbPort+":"+dbSid;
//ShowMessage(UniConnection1->Server);
if(!UniConnection1->Connected)
    {
    try
        {
        UniConnection1->Connect();
        myLog("链接数据库["+dbIp+"]成功!");
        }
    catch(...)
        {
        myLog("因链接数据库["+dbIp+"]失败!");
        return;
        }
    }

}


3、向表格中插入数据


//---------------------------------------------------------------------------
void __fastcall TFormMain::Button1Click(TObject *Sender)
{
AnsiString myName="张三";
int myAge=78;UniQuery1->Close();
UniQuery1->SQL->Clear();


mySql="insert into mytable values(:p1,:p2)";


UniQuery1->SQL->Add(mySql);


UniQuery1->ParamByName("p1")->Value=myName;


UniQuery1->ParamByName("p2")->Value=myAge;
UniQuery1->ExecSQL();


if(UniQuery1->RowsAffected>0)
    {
    ShowMessage("插入成功!");
    }
}

4、查询数据


//---------------------------------------------------------------------------
void __fastcall TFormMain::Button2Click(TObject *Sender)
{
UniQuery1->Close();
UniQuery1->SQL->Clear();


mySql="select * from mytable";


UniQuery1->SQL->Add(mySql);


UniQuery1->Open();


}


C++Builder下如何使用UniDAC控件访问ORACLE数据库


三、已有项目升级

配置好以后打开已有项目编译,如果遇见“Can not find dac240.lib ”之类找不到原有旧版本的库文件时,可以用UE等文本编辑器,打开项目主文件XXX.cbproj,查找报错信息中找不到的各个lib文件,将文件名由xxx240.lib修改为xxx250.lib



最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台