怎么樣用DELPHI語言判斷SQL中有表的存在﹐如果不存在則創建它(100分)

  • 主题发起人 主题发起人 lyj19851216
  • 开始时间 开始时间
L

lyj19851216

Unregistered / Unconfirmed
GUEST, unregistred user!
比如說我現在要創建表AA﹐但是我不知道庫中是否已經有了它的存在﹐那么先要進行判斷﹐怎么來判斷。。。我的代碼是這樣寫的﹐但是不對﹐哪位高手知道的指教下。。。
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
q.Close;
q.SQL.Clear;
q.SQL.Add('select * from mmn');
try
begin
q.Open;
if q.Active=true then
begin
showmessage('~~~');
end;
end;
except
begin
q.Close;
q.SQL.Clear;
q.SQL.Add('create table mmn(id int,nu char(4)) select * from mmn');
q.Open;
showmessage('OK!');
end;
end;
end;
 
systables这个表里面你数据库中所有的数据表!
 
不是很明白。。。我的想法是﹕要判斷是否有﹐用SELECT語句來測試一下能否打開就知道﹐不知道這種思路是否正確﹐如果正確應該怎樣寫呢(我寫了好久都沒寫好)﹐如果不正確﹐那么用其他的什么方法呢。你可以把你的思路和具體的方法寫出來嗎﹐我不是很懂你的意思。。。
謝謝你的回復~~~~~~
 
知道的高手來幫一把嘛~~~~~~~~~~~~
 
不要那么麻烦 。SQL语句即可

IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'PUNITTABLE' AND type = 'U') --如果有表PUNITTABLE
DROP TABLE PUNITTABLE --删除表PUNITTABLE
GO

CREATE TABLE PUNITTABLE --建立表PUNITTABLE
(KEYID NUMERIC(15) , --表KEYID
xID VARCHAR(15) , --编号
xNAME VARCHAR(20) , --名称
CONSTRAINT PRI_PUNITTABLE PRIMARY KEY (KEYID))
GO
 
写的很好
 
加个异常结构是否可行。没试过^&^
 
IF NOT EXISTS(SELECT name FROM sysobjects WHERE name = N'regTable' AND type = 'U')
CREATE TABLE [dbo].[regTable] (
[ID] [numeric](18, 0) IDENTITY (1, 1) NOT NULL primary key,
[mID] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[key1] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[key2] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
 
如果是ACCESS,系统表名是 Msysobjects
 
同意网中戏的说。。
 
多人接受答案了。
 
后退
顶部