我尝试使用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服务器上显示这个数据库。如何检查服务器上是否添加了数据库?
答案 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组件,因为这没有用处。
备注
在上面的代码中创建数据库后,没有需要"附加"它是IBConsole.Exe或Interbase服务器,以便能够使用它 您可以设置IBDatabase,IBTransaction和IBQuery来连接它,并通过发出" CREATE TABLE ..."在其中创建表。来自IBQuery的SQL语句。
如果您希望数据库在IBConsole实用程序中列出,您可以
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在当前时刻不会显示服务器上的所有数据库,而只是由我理解的相同工具创建。