首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

一个容易的数据库应用的代码结构

2012-12-31 
一个简单的数据库应用的代码结构?按入门教材,建立一基础工程,删除Form1,然后Database-From Wizard...选择

一个简单的数据库应用的代码结构?
按入门教材,建立一基础工程,删除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

执行的时候,先创建Application对象,这个对象负责整个应用程序的生命周期以及Form的管理。Application对象创建工程选项中设定好的Form(类似CreateWindow),然后创建每个Form中定义的对象(如上面提到的Button), 根据DFM文件中对Button的描述,初始化其属性(类似SetWindowText为窗口设置文本)等,并且Application对象会接受和派发鼠标及键盘的消息,以实现Button的点击,等等。

我只是大概讲讲,这些知识不是一言两语能解释清的。

热点排行