在InterBase中创建数据库

时间:2016-01-25 07:51:13

标签: delphi interbase

我尝试使用TIBDatabase类型在Delphi上创建InterBase数据库。

ibdb:=TIBDatabase.Create(nil);
with ibdb do
  begin
    SQLDialect:=3;
    DatabaseName:=Self.name;
    Params.Clear;
    Params.Add('USER "SYSDBA"');
    Params.Add('PASSWORD "masterkey"');
    Params.Add('PAGE_SIZE 4096');
    LoginPrompt:=false;
    try
      CreateDatabase;
    except on E: Exception do
      ShowMessage('Can''t create database. '+E.Message);
    end;
  end;

Self.name就像一个' localhost:C:\ db.ib'。 代码无误地运行。数据库文件已创建但是IBConsole并没有在IB服务器上显示这个数据库。如何检查服务器上是否添加了数据库?

2 个答案:

答案 0 :(得分:1)

以下内容适合我并避免到目前为止您提到的所有问题:

1启动一个新的Delphi项目

2将TIBDatabase放到表单

3将以下CreateDatabase程序添加到表单

procedure TForm1.CreateDatabase;
begin
  IBDatabase1.SQLDialect:=3;
  IBDatabase1.DatabaseName := 'D:\aaad7\interbase\newdb.gdb';  //edit for
    //  your system & check that you have file-creation rights in the 
    //  database folder you want to use.

  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('USER ''SYSDBA''');  // Note that this line
  //  contains 5 single-quotes and no double quotes

  //  Also note that the omission of the usual '=' between the 
  //  parameter name and value for the USER and PASSWORD is deliberate, 
  // because it's evidently required by the IB api

  IBDatabase1.Params.Add('PASSWORD ''masterkey''');  // Ditto

  IBDatabase1.LoginPrompt:=false;

  try
    IBDatabase1.CreateDatabase;
  except on E: Exception do
    ShowMessage('Can''t create database. '+E.Message);
  end;
end;

4添加TButton并将其OnClick事件设置为CreateDatabase

5编译&单击Button1

使用Delphi 7和Interbase XE7,此代码成功创建了newdb.gdb数据库,并且该数据库在Delphi应用程序终止后保留在磁盘上。然后,我可以使用下面描述的过程在IBConsole中打开数据库。在IBConsole运行时,我无法通过Windows shell删除数据库文件,但我可以在关闭它之后删除它。

你得到相同的结果,如果你这样做,那会解决你的问题,如果没有,为什么不呢?

顺便说一句,我已经编写了CreateDatabase代码,以避免使用"和#34;,因为它通常会产生比避免更多的问题而且我厌恶它,并且 避免动态创建TIBDatabase组件,因为这没有用处。

备注

  1. 在上面的代码中创建数据库后,没有需要"附加"它是IBConsole.Exe或Interbase服务器,以便能够使用它 您可以设置IBDatabase,IBTransaction和IBQuery来连接它,并通过发出" CREATE TABLE ..."在其中创建表。来自IBQuery的SQL语句。

  2. 如果您希望数据库在IBConsole实用程序中列出,您可以

  3. a)使用下面上一个答案

    中的程序手动添加

    b)将代码添加到IBConsole配置文件IBConsole.XML中,您可以在C:\ users [您的用户名] \ Appdata \ Roaming \ Embarcadero \ Interbase中找到它,使用您的Delphi XML访问库选择。如果您使用下面的手动过程添加它,然后关闭 IBConsole.Exe以便在磁盘上更新配置文件,您将能够检查XML文件并找到该节点Server / Databases节点下的数据库。它看起来像

    <key name="Newdb">
    <value name="Accessed">A32BFE2475B3E440</value>
    <value name="CaseSensitiveRole">0</value>
    <value name="CharacterSet"/>
    <value name="Created">7DB1327474B3E440</value>
    <value name="DatabaseFiles">D:\aaad7\Interbase\NEWDB.GDB</value>
    <value name="Encrypted">0</value>
    <value name="EUA Enabled">0</value>
    <value name="Password">096e6376786a78726d82</value>
    <value name="Role"/>
    <value name="Save DBAlias">1</value>
    <value name="SEP"/>
    <value name="Use DBAlias">0</value>
    <value name="Username">SYSDBA</value>
    <value name="UseSSL">0</value>
    </key>
    

    上一个回答

    试试这个:

    • 在IBConsole中,单击Local Server节点并选择其“数据库”节点

    • 右键点击Databases节点,然后选择Add

    • Add database and Connect弹出窗口中,点击文件的RHS按钮

    • 从那里,您应该可以导航到并选择新数据库。

    使用Interbase XE7 IBConsole进行测试。

    如果这对您不起作用,究竟哪一步失败以及如何失败?

答案 1 :(得分:0)

我似乎找到了答案。代码在InterBase服务器上创建数据库文件并添加数据库。它可以通过isql实用程序检查。奇怪的是,IBConsole和IBExpert在当前时刻不会显示服务器上的所有数据库,而只是由我理解的相同工具创建。