插入——>对象……”菜单便知), 笔者利用此技术成功地实现了Flas*****存储和播放(已装有Flash 5)。当然也 可使用第三方开发的组件或控件,C++ Builder也支持OCX控件,例如利用MP3Play 控件实现MP3的播放。
至此,一个小型的多媒体数据库系统用“集成 法”创建完成。
分离法
这种方法就是将多媒体数据与数据库 分开存放。在数据库中相应的字符字段只存放该多媒体数据的文件名,它是数据 库与数据之间的“接口”。这种情况下数据库结构可以在运行中动态 创建,因此可在功能界面上(功能界面上的其他部分与图1完全相同)再增加一个 按钮“创建数据库结构”并在其OnClick事件过程置入如下代码: void __fastcall TForm1::Button5Click(TObject *Sender)
{ TTable *newTable = new TTable(this);
newTable->Active = false;
newTable->DatabaseName =“e:\\mydata”;
newTable->TableName = “example2.db”;
newTable->TableType = ttParadox;
newTable->FieldDefs->Clear();
newTable->FieldDefs->Add(“编号”,ftString,8, false);
//字段均为字符型
newTable->FieldDefs- >Add(“姓名”,ftString,8,false);
newTable- >FieldDefs->Add(“像片”,ftString,12,false);
newTable->FieldDefs->Add(“声音”,ftString,12 ,false);
newTable->FieldDefs->Add(“活动影像 ”,ftString,12,false);
newTable->CreateTable ();
delete newTable;
}
由于允许动态 创建库结构,组件Table1的DatabaseName属性和DBEdit1、DBEdit2的DataField属 性用代码进行设置。因为“像片”字段存放的只是其文件名,所以组 件DBImage1用Image1组件代替。这时,只需将“打开数据库”按钮的 OnClick事件过程修改为:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ Table1- >DatabaseName = “e:\\mydata”;
Table1- >TableName = “example2.db”;
DBEdit1- >DataField = “编号”;
DBEdit2->DataField = “姓名”;
Table1->Active = true;
Image1->Picture->LoadFromFile(Table1->DatabaseName + “\\media\\” + Table1->FieldByName(“像片”)- >AsString);
}
将“增加记录”按钮的 OnClick事件过程修改为:
void __fastcall TForm1::Button2Click(TObject *Sender)
{ Table1->Active = false;
Table1->DatabaseName = “e:\\mydata”;
Table1->TableName = “example2.db”;
Table1->Active = true;
Table1->AppendRecord(OPENARRAY(TVarRec, (“20010521”,“刘德友”,“ldy.bmp”, “ldy.wav”,“ldy.avi”)));
Table1- >AppendRecord(OPENARRAY(TVarRec,(“20010522”,“王 英”,“wy.bmp”,“wy
.wav”, “wy.avi”)));
Table1->AppendRecord(OPENARRAY (TVarRec,(“20010523”,“张学华”, “zxh.bmp”,“zxh.wav”, “zxh.avi”)));
Table1->First();
// 记录指针移到数据表首条记录
Image1->Picture- >LoadFromFile(Table1->DatabaseName + “\\media\\”+Table1->FieldByName(“像片”)- >A
|