帮忙解决一下怎样创建数据库?

解决方案 »

  1.   

    随便找本sql的书,都有。creat table。
      

  2.   

    先要分清你要用sql语句创建,还是要用原生对象创建
      

  3.   

    创建数据库可以把要创建数据库的SQL文件放在一个文件中,到创建的时候读取,这样可以随时修改要创建的数据库的内容,
    而不用修改源程序。
    例如要创建数据库的表为:AREA
    可以将如下创建数据表的SQL语句命名为:MyCreateDB.sys
    //////////////////////////////////////////////////////////////////////
    CREATE TABLE [dbo].[AREA] (
    [AREA_ID] [int] IDENTITY (1, 1) NOT NULL ,
    [AREA_NAME] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
    [FULL_NAME] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]ALTER TABLE [dbo].[AREA] WITH NOCHECK ADD 
    CONSTRAINT [PK_AREA] PRIMARY KEY CLUSTERED 
    (
    [AREA_ID]
    ) ON [PRIMARY] 
    ////////////////////////////////////////////////////////////////////////先连接数据库,连接字符串为
    SQLConn:='Provider=SQLOLEDB.1;Password='''+edit3.Text+''' ;Persist Security Info=True;User ID= '''+edit2.Text+''' ;Data Source= '''+Combobox1.Text+'''';;
    //用TADOConnection连接 
    AdoConnection1.ConnectionString:=SQLConn;
    //打开数据库
    AdoConnection1.Connected:=true;
    //如果能连上数据库,向注册表里添加注册信息。
    //Uses Regestry;
    if ADOConnection1.Connected=true then
    begin
    reg:=tregistry.Create;
    with reg do
    begin
    rootkey:=hkey_local_machine;
    OpenKey('software\microsoft\windows',false);
    WriteString('服务器',combobox1.Text);
    writestring('用户名',edit2.text);
    writestring('密码',Trim(edit3.text));
    writestring('年份',formatdatetime('yyyy',date));
    writestring('date',formatdatetime('yyyy-mm-dd',date));closekey;
    destroy;
    end;
    end;
    //创建数据库用
    AdoCommand1.CommandText:='CREATE DATABASE MyData';
    AdoCommand1.Execute;
    //创建数据表,可以采用如下快速的方法调入MyCreateDB.sys的文本内容。
    Memo1.Lines.Clear;
    Memo1.Lines.LoadFromFile(MainDir+'MyCreateDB.sys');
    ADOCommand1.CommandText:=Memo1.Lines.Text;
    Adocommand1.Execute;
    //程序创建成功后,再次写入注册表。信息,如上的写入方法。
    //当要连接数据库的时候,直接从注册表中读出服务器名称,用户名,密码,就可以连接数据库了。
    Reg:=TRegistry.Create;
    Reg.RootKey:=hkey_local_machine;
    try
    if Reg.OpenKey('software\microsoft\windows',false) then
    begin
    MyPW:=Reg.ReadString('密码');
    UserID:=Reg.ReadString('用户名');
    DataS:=reg.ReadString('服务器');
    end;
    except
    end;
    Reg.CloseKey;
    Reg.Free;对于Access数据库如下:
    avant:结果很不错,又研究了一下SQL语言,呵呵,下面是我最终的程序,通过
    ADO创建Database,以及通过SQl创建里面的Table和Index。procedure TDataModule1.CreateNewDatabase(DatabaseFileName: string);
    var
    cat:OleVariant;
    begin
    if FileExists(DatabaseFileName) then
    begin
    if MessageBox(Application.Handle,
    PChar('Database ' + DatabaseFileName + ' has existed!'
    + #13#10 + 'Delete this database and create a new database ?'),
    'Database Exists',MB_YESNO + MB_ICONWARNING + MB_DEFBUTTON2) = mrNo then
    exit;
    if not DeleteFile(DatabaseFileName) then
    begin
    MessageBox(Application.Handle,
    PChar('Cannot delete database ' + DatabaseFileName),
    'Delete Database Error!',MB_OK + MB_ICONERROR);
    exit;
    end;
    end;cat:=CreateOleObject('ADOX.Catalog');
    cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DatabaseFileName);
    if ConnectDatabase(DatabaseFileName) then
    begin
    adoquryClass.Close;
    adoquryClass.SQL.Text := 'Create Table FaqClass ' +
    '(' +
    'ClassID INT not null,' +
    'ClassTitle char(100) not null,' +
    'ParentClassID INT not null,' +
    'ClassType TINYINT DEFAULT 0' +
    ')';
    adoquryClass.ExecSQL;
    adoquryClass.Close;
    adoquryClass.SQL.Text := 'Create UNIQUE Index ClassIDIndex ON FaqClass (ClassID)';
    adoquryClass.ExecSQL;
    adoquryClass.Close;
    adoquryClass.SQL.Text := 'Create Index ClassTitleIndex ON FaqClass (ClassTitle)';
    adoquryClass.ExecSQL;
    adoquryClass.Close;
    adoquryClass.SQL.Text := 'Create Index ParentClassIDIndex ON FaqClass (ParentClassID)';
    adoquryClass.ExecSQL;
    adoquryClass.Close;
    adoquryClass.SQL.Text := 'Create Index ClassTypeIndex ON FaqClass (ClassType)';
    adoquryClass.ExecSQL;
    adoquryMemo.Close;
    adoquryMemo.SQL.Text := 'Create Table FaqMemo' +
    '(' +
    'MemoID INT not null,' +
    'ParentClassID INT not null,' +
    'MemoTitle char(100) not null,' +
    'MemoText TEXT,' +
    'MemoPublic BIT DEFAULT 0,' + //缺省是不公开
    'MemoLastModifyTime DATETIME' +
    ')';
    adoquryMemo.ExecSQL;
    adoquryMemo.Close;
    adoquryMemo.SQL.Text := 'Create UNIQUE Index MemoIDIndex ON FaqMemo (MemoID)';
    adoquryMemo.ExecSQL;
    adoquryMemo.Close;
    adoquryMemo.SQL.Text := 'Create Index ParentClassIDIndex ON FaqMemo (ParentClassID)';
    adoquryMemo.ExecSQL;
    adoquryMemo.Close;
    adoquryMemo.SQL.Text := 'Create Index MemoTitleIndex ON FaqMemo (MemoTitle)';
    adoquryMemo.ExecSQL;
    adoquryMemo.Close;
    adoquryMemo.SQL.Text := 'Create Index MemoPublicIndex ON FaqMemo (MemoPublic)';
    adoquryMemo.ExecSQL;
    adoquryMemo.Close;
    adoquryMemo.SQL.Text := 'Create Index MemoLastModifyTimeIndex ON FaqMemo (MemoLastModifyTime)';
    adoquryMemo.ExecSQL;
    end;
    end;
    由于这里发送半角的引号总是出错,请在用的时候替换为半角
      

  4.   

    to 天涯浪子居士:能不能给我一个小小的数据库,在delphi界面上有调用数据库,能给我完整的文档(设计步骤)是最好,谢谢