一个简单的数据库应用的代码结构?
按入门教材,建立一基础工程,删除Form1,然后Database->From Wizard...选择一个DSN选择一个表,把字段加入,然后选In a grid.成功做了一个数据库应用程序.
但是在代码里看,只有一个TForm1类,并只实现了两个成员函数:
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Table1->Open();
}
而找不到那几个与数据库有关的成员变量
TIntegerField *Table1id;
TStringField *Table1xingming;
TIntegerField *Table1nianlin;
TIntegerField *Table1shengao;
TDBGrid *DBGrid1;
TDBNavigator *DBNavigator;
TPanel *Panel1;
TDataSource *DataSource1;
TPanel *Panel2;
TTable *Table1;
是怎么初始化怎么联系起来实现数据库操作的代码,这是怎么回事?
从我的认识看来,这里的这些成员变量都没有初始化甚至没有调用构造函数,Unit1的h和cpp里都没有显性把这些成员变量怎么怎么用宏来怎么怎么操作.怎么回事啊,想改变数据库行为从代码上在哪入手啊?
[解决办法]
虽然是自动生成,但是和自己做结果一样。
这个cpp里虽然代码很少,但是h头文件里的声明一个都不少,看以看看,另外dfm窗体文件里保存了控件间的关系,控件的属性设置,绑定等等。
[解决办法]
TDBGrid *DBGrid1;
TDBNavigator *DBNavigator;
TPanel *Panel1;
TDataSource *DataSource1;
TPanel *Panel2;
TTable *Table1;
这些组件,都是在窗体上拖放的。至于
TIntegerField *Table1id;
TStringField *Table1xingming;
TIntegerField *Table1nianlin;
TIntegerField *Table1shengao;
这是字段对象,是在数据集中Add进来的。
有一些教材是极端不负责任的误导新手,所以,书,不能全信。
[解决办法]
>>>这里的这些成员变量都没有初始化甚至没有调用构造函数
这些对象的初始化和结束工作是C++Builder自动来完成的
>>>Unit1的h和cpp里都没有显性把这些成员变量怎么怎么用宏来怎么怎么操作
C++Builder中,你直接使用这些对象的方法就行了,无需数据交换。你需要了解每个对象是干什么用的。
>>>想改变数据库行为从代码上在哪入手啊?
操作TTable对象就行了,如:
Table1->Close(); // 关闭数据集
Table1->Open(); // 打开数据集
Table1->RecordCount属性是记录的数量
。。。
[解决办法]
对于一个标准的VCL Form Application工程来说,假设窗体(Form)上有一个TButton组件,那么对应的.h文件中有声明,如
TButton *Button1;
对应的窗体文件(.dfm)中有描述:
object Button1: TButton
Left = xxx
Top = xxx
Width = xxx
Height = xxx
Caption = 'Button1'
TabOrder = 2
OnClick = Button1Click
end