I was a VB programmer, until my recent shift to Delphi 2.0. How can I
create a database in code?
It depends on the type of database you want to build. However, I can show you how to do
it with a Paradox table. Conceivably, it stands to reason that since the TTable is
database-independent and if you've got the right settings in the BDE, you should be able
to create a table with the TTable component in any database. This is not necessarily true.
SQL tables are normally created using the SQL call CREATE TABLE. And each server has its
own conventions for creating tables and defining fields. So it's important to note this if
you're working with a SQL database. The problem is that SQL databases support different
data types that aren't necessarily available in the standard BDE set. For instance, MS SQL
server's NUMERIC data format is not necessarily a FLOAT as it's defined in the BDE. So
your best bet would probably be to create SQL tables using SQL calls.
What you have to do is declare a TTable variable, create an instance, then with the
TTable's FieldDefs property, add field definitions. Finally, you'll make a call to
CreateTable, and your table will be created. Here's some example code:
{ "Add" is the operative function here.
Add(const Name: string; DataType: TFieldType; Size: Word; Required: Boolean);
}
procedure CreateATable(DBName, //Alias or path
TblName : String); //Table Name to Create
var
tbl : TTable;
begin
tbl := TTable.Create(Application);
with tbl do begin
Active := False;
DatabaseName := DBName;
TableName := TblName;
TableType := ttParadox;
with FieldDefs do begin
Clear;
Add('LastName', ftString, 30, False);
Add('FirstName', ftString, 30, False);
Add('Address1', ftString, 40, False);
Add('Address2', ftString, 40, False);
Add('City', ftString, 30, False);
Add('ST', ftString, 2, False);
Add('Zip', ftString, 10, False);
end;
{Add a Primary Key to the table}
with IndexDefs do begin
Clear;
Add('Field1Index', 'LastName;FirstName', [ixPrimary, ixUnique]);
end;
CreateTable; {Make the table}
end;
end;
The procedure above makes a simple contact table, first by defining the fields to be
included in the table, then creating a primary key. As you can see, it's a pretty
straightforward procedure. One thing you can do is to change the TableType property
setting to a variable that's passed as a parameter to the procedure so you can create
DBase or even ASCII tables. Here's snippet of how you'd accomplish that:
procedure CreateATable(DBName, //Alias or path
TblName : String); //Table Name to Create
TblType : TTableType); //ttDefault, ttParadox, ttDBase, ttASCII
var
tbl : TTable;
begin
tbl := TTable.Create(Application);
with tbl do begin
Active := False;
DatabaseName := DBName;
TableName := TblName;
TableType := TblType;
with FieldDefs do begin
Clear;
Add('LastName', ftString, 30, False);
Add('FirstName', ftString, 30, False);
Add('Address1', ftString, 40, False);
Add('Address2', ftString, 40, False);
Add('City', ftString, 30, False);
Add('ST', ftString, 2, False);
Add('Zip', ftString, 10, False);
end;
{Add a Primary Key to the table}
with IndexDefs do begin
Clear;
Add('Field1Index', 'LastName;FirstName', [ixPrimary, ixUnique]);
end;
CreateTable; {Make the table}
end;
end;
Pretty simple, right? One thing you should note is that the TableType property is only
used for desktop databases. It doesn't apply to SQL tables.
Oh well, that's it in a nutshell. Have fun!
Copyright © 1995, 1996, 1997 Brendan V. Delumpa All Rights Reserved
|