既然要搬家,就要逐步把原来blog中用得到的内容慢慢搬过来。
由于工作需要,现在要学习在C++ Builder中使用ODAC(Oracle Data Access Components)的数据库操作,因为我一直以来都是做Java方面工作的,所以对C++,尤其是C++ Builder不是太熟悉。
但是,Google了一下,现在网上有关ODAC使用的内容非常少(不知道是什么原因,在网络上C++的资源要比Java资源少得多,有知道资源朋友推荐一下,谢谢)。
后来,对照了部分ODAC组件和C++ Builder自带数据库组件的方法,发现一个神奇的问题,ODAC组件和C++ Builder自带数据库组件的方法大部分是类似的,于是我找来一本《C++ Builder 6程序设计教程》(陆为中 刘文亮 等 编著,第7章7.3数据访问组件)。
ODAC使用的文章主要以《C++ Builder 6程序设计教程》为参考,甚至摘录部分内容。
整理一下,加强记忆,方便以后查阅。
名词:
数据集组件:通过设置其属性能够连接数据库,如:TOraQuery、TOraTable、TOraStoredProc组件;
数据控制组件:略
TOraDataSource组件:
TOraDataSource组件联系数据集组件和数据控制组件;
1.属性说明
AutoEdit属性
AutoEdit属性用于控制用户是否能对与之连接的数据集中的数据进行修改。
DataSet属性
上面说过的“TOraDataSource组件联系数据集组件和数据控制组件”,这个DataSet属性就是指定数据源组件引用哪个数据集组件的。
该属性可以在程序设计时指定,也可以在程序运行时赋值。
Enabled属性
Enabled属性控制与TOraDataSource组件相连的数据控制组件是否显示数据。Enabled属性值为true时,数据控制组件显示数据;Enabled属性值为false时,数据控制组件则不显示任何数据。
Enabled属性默认值为true。
State属性
State属性返回与TOraDataSource组件相连的数据集组件的当前状态。
当Enabled属性为false或者没有指定DataSet属性时,无论数据集组件的实际状态如何,State属性总是为dsInactive。否则,State属性值与数据集的当前状态相符。
2.方法说明
Edit方法,该方法允许用户对与该数据源组件相关联的数据库表进行编辑修改。Edit方法首先检查AutoEdit的属性值是否为true,State 属性是否处于dsBrowse状态。然后,再调用数据集Edit方法。检查这些状态的目的是保证数据集组件处于支持编辑的状态。
3.事件说明
OnDataChange :暂不做描述
OnStateChange :暂不做描述
OnUpdateData :暂不做描述
例子:
新建一个Application项目,在Form1中一个TLabel、三个按钮,再添加TOraSession、TOraQuery、TOraDataSource三个对象;
双击TOraSession对象,在填出窗口中分别填入Username、Password、Server、Home,然后关闭窗口;设置三个按钮分别为连接、断开和关闭;
双击连接按钮,写入以下内容:
void __fastcall TForm1::connectClick(TObject *Sender)
{
OraSession1->Connect();
OraQuery1->Session = OraSession1;
OraQuery1->SQL->Clear();
OraQuery1->SQL->Add("select a,b,c from test");
OraQuery1->Open();
OraDataSource1->DataSet = OraQuery1;
}
双击断开按钮,写入以下内容:
void __fastcall TForm1::disconnectClick(TObject *Sender)
{
OraSession1->Disconnect();
}
双击关闭按钮,写入以下内容:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Close();
}
选择TOraDataSource对象,在左边的Object Inspector窗口选择Events卡片,双击OnStateChange,写入以下内容:
void __fastcall TForm1::OraDataSource1StateChange(TObject *Sender)
{
Label1->Caption = OraDataSource1->State;
}
点击“F9”运行。