[C++Builder/Delphi初学者指南] 三分秒完成数据表的转换
西安 warton
笔者在先前写程序时,经常遇到数据库的转换问题,一般的方法是用SQL语句将数据从表中取出,再insert到另一个表。这个方法比较通用,在任何编程语言中都可以使用。但这样比较麻烦,需要编程者有一定的经验。
笔者在使用C++Builder和Delphi之后,发现它们提供的BatchMove控件就能完成数据表的转换。而且操作相当方便,在数分钟之内就能完成!
下面,我来做一个实验:将BCDEMOS(Paradox库,CB,Delphi自带)中的Customer.db转换为test.Mdb(MicroSoft ACCESS库)中的test(表)。
1. 建立一个新工程,选择New-àApplication;
2. 添加控件:Table1,Tabel2,DataSource1, DataSource2,DBGrid1, DBGrid2,BatchMove1,Button1,Button2
3. 建立一个MDB文件,打开该文件,建立一个新表,字段只写一个Custno,类型为数字(这里使用的是ACESS的MDB文件数据库,字段不用和paradox表一致,只要第一个字段相同就行,或者只要有一个空表就行),并为该文件配置ODBC。笔者这里是D:\test.mdb(笔者的odbc dsn设置为access,数据库为:D:\test.mdb,如下图:)。
4. 在C++Builder/Delphi的SQL Explorer中new 一个数据库别名:ACCESS,并选择其odbc dsn为刚才设置的ODBC数据源。
5. 分别为各控件设置属性(只需在控件上设置即可,不用在代码中写了):
Table1
Table1: TTable
Active = True
DatabaseName = 'BCDEMOS'
TableName = 'customer.db'
Table2
Table2: TTable
DatabaseName = 'ACCESS'
TableName = 'test'
TableType = tDefault
DataSource1
DataSource1: TDataSource
DataSet = Table1
DataSource2
DataSource2: TDataSource
DataSet = Table2
BatchMove1
BatchMove1: TBatchMove
Destination = Table2
Mode = batCopy //很重要,表明是复制模式
Source = Table1
DBGrid2
DBGrid2: TDBGrid
DataSource = DataSource1
DBGrid1
DBGrid1: TDBGrid
DataSource = DataSource2
Button1
Button1: TButton
Caption = '转换'
Button2
Button2: TButton
Caption = '刷新'
6.为Button1及Button2添加事件:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BatchMove1->Execute();//执行转换
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Table2->Open(); //打开表,可以在DBGrid2中看到转换的结果
}
最后,编程并运行程序,点击Button1等程序执行完毕后,点击Button2,你会发现Paradox库中的Customer.db中的数据全都导入到了ACCESS库 test.mdb的test表中了。
使用这种方法操作相当简单,只需要简单地设置几个相关的性就OK了,有兴趣的朋友不妨试试。(本测试程序在windows XP Home Edition ,C++Builder 6下完成)