求用delphi 创建数据库 帮忙解决一下怎样创建数据库? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 随便找本sql的书,都有。creat table。 先要分清你要用sql语句创建,还是要用原生对象创建 创建数据库可以把要创建数据库的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 thenbeginreg:=tregistry.Create;with reg dobeginrootkey:=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;tryif Reg.OpenKey('software\microsoft\windows',false) thenbeginMyPW:=Reg.ReadString('密码');UserID:=Reg.ReadString('用户名');DataS:=reg.ReadString('服务器');end;exceptend;Reg.CloseKey;Reg.Free;对于Access数据库如下:avant:结果很不错,又研究了一下SQL语言,呵呵,下面是我最终的程序,通过ADO创建Database,以及通过SQl创建里面的Table和Index。procedure TDataModule1.CreateNewDatabase(DatabaseFileName: string);varcat:OleVariant;beginif FileExists(DatabaseFileName) thenbeginif 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 thenexit;if not DeleteFile(DatabaseFileName) thenbeginMessageBox(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) thenbeginadoquryClass.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;由于这里发送半角的引号总是出错,请在用的时候替换为半角 to 天涯浪子居士:能不能给我一个小小的数据库,在delphi界面上有调用数据库,能给我完整的文档(设计步骤)是最好,谢谢 输入法注入之delphi版 求教sql查询历史库存的写法 请问ini文件怎么逐一对比。。 DBGridEh中,如何用程序取得多表头的各项数据,如层数,每层每格的宽度,及每格中显示的文字?? 主菜单的同一行右边如何加入一个图标,就跟浏览器一样,靠右边有一个windows的图标,跟菜单在同一行. 深圳的朋友!看看我的情况,去那大概能拿多少钱! 我使用了winamp那样的拖动客户窗体代码,但窗体上的按钮事件却无响应了! 如何调用过程 谁知道TDDDD,TDDIDEX,TDDSD在那可以得到。 高手呢。。帮帮忙了~~~ 编译报错,紧急求救 一个递归的问题
而不用修改源程序。
例如要创建数据库的表为: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;
由于这里发送半角的引号总是出错,请在用的时候替换为半角