(同一个世界,同一个梦想,交流学习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控件.
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();
{
ShowMessage("插入成功!");
}
}
4、查询数据
//---------------------------------------------------------------------------
void __fastcall TFormMain::Button2Click(TObject *Sender)
{
UniQuery1->Close();
UniQuery1->SQL->Clear();
mySql="select * from mytable";
UniQuery1->SQL->Add(mySql);
UniQuery1->Open();
}
配置好以后打开已有项目编译,如果遇见“Can not find dac240.lib ”之类找不到原有旧版本的库文件时,可以用UE等文本编辑器,打开项目主文件XXX.cbproj,查找报错信息中找不到的各个lib文件,将文件名由xxx240.lib修改为xxx250.lib