線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1482
推到 Plurk!
推到 Facebook!

如何檢查MySql Database Name 存不存在

尚未結案
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-12 08:31:41 IP:61.228.xxx.xxx 未訂閱
使用 My SQL2000 DataBase 判斷檢查 Database Name 不存在時才用SQL語法去 Create Database..... 謝謝 發表人 - nick167 於 2004/02/12 12:16:34 發表人 - nick167 於 2004/02/12 12:17:51
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-12 12:52:29 IP:202.39.xxx.xxx 未訂閱
不知您的 My SQL2000 是不是就是 mysql? 是的話, 試試: 使用 TADOConnection/TADODataset/TDataSource/TDBGrid 元件 設定好 ConnectionString 與其它相關設定後 連上 mysql,
begin
  TADODataset.Close;
  TADODataset.CommandText := 'Show Databases';
  TADODataset.Active := True;
end;
然後, 就可以在 TDBGrid 元件看到 mysql 內有哪些 database 不過, 好像要 login 的 user 有權限吧. --- Everything I say is a lie. --<-<-<@
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-13 14:54:47 IP:61.228.xxx.xxx 未訂閱
謝謝Hagar版主 使用 SQL2000 begin TADODataset.Close; TADODataset.CommandText := 'Show Databases'; // 請版主原諒,未能體會 'Show Databases' 意 思會出線error message "Could not find stored produre 'show' " 無法去判斷單一Dataabase Name存不存在?
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-13 15:16:27 IP:61.221.xxx.xxx 未訂閱
您好: 您可以用TSession.GetDatabaseNames找出資料庫名稱
MyStringList := TStringList.Create;
try 
  Session.GetDatabaseNames(MyStringList);
  { fill a list box with database names for the user to select from }
  ListBox1.Items := MyStringList;
finally
  MyStringList.Free;
end;
 
~~應無所住而生其心~~ 發表人 - Terrychen 於 2004/02/13 15:27:12
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-13 16:46:29 IP:61.228.xxx.xxx 未訂閱
引言: 您好: 您可以用TSession.GetDatabaseNames找出資料庫名稱
MyStringList := TStringList.Create;
try 
  Session.GetDatabaseNames(MyStringList);
  { fill a list box with database names for the user to select from }
  ListBox1.Items := MyStringList;
finally
  MyStringList.Free;
end;
 
~~應無所住而生其心~~ 發表人 - Terrychen 於 2004/02/13 15:27:12
MyStrngList Var:??? 可否在詳細一點?謝謝
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-13 16:57:43 IP:211.22.xxx.xxx 未訂閱
您好: 是的  
 
var
  MyStringList : TStringList;
begin
  MyStringList := TStringList.Create;
  try 
    Session.GetDatabaseNames(MyStringList);
    { fill a list box with database names for the user to select from }
    ListBox1.Items := MyStringList;
  finally
    MyStringList.Free;
end;
end;
~~應無所住而生其心~~
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-13 17:18:01 IP:61.228.xxx.xxx 未訂閱
terrychen您好: 可以顯示DataBases Name,可能我表達不好 我在 Sql Server Enterprise:DataBases(mycust)裡如何判斷當無test.dbo如何去 New Table ? if not ...(test.dbo) then 類似... 謝謝,可否在麻煩嘛? 我已經找了2天網路資源,沒有結果!
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-13 18:13:23 IP:203.95.xxx.xxx 未訂閱
請問你是要 delphi 的做法嗎? 還是 sql command 的做法呢??    delphi 的做法我想上面的前輩都寫得很清楚了, sql command 的做法如下:
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test')
  print 'database test exists'
else
begin
  print 'database test not exists'
  CREATE DATABASE [test]
end
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-13 18:26:55 IP:61.228.xxx.xxx 未訂閱
1.Terrychen的 我只測式得BDE,我希望取MySql Database Name var MyStringList : TStringList; begin MyStringList := TStringList.Create; try Session.GetDatabaseNames(MyStringList); { fill a list box with database names for the user to select from } ListBox1.Items := MyStringList; finally MyStringList.Free; end; end; 2. IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'test') print 'database test exists' else begin print 'database test not exists' CREATE DATABASE [test] end [/code] 不知為何出現 error message ? [Error] Unit1.pas(30): Undeclared identifier: 'EXISTS' 3. 另外我程式按第一可以,按按第二次出現 there is already an object named 'testb' in the database ? procedure TForm1.Button2Click(Sender: TObject); begin adoquery1.sql.add('IF EXISTS (SELECT * '); adoquery1.sql.add('FROM dbo.sysobjects '); adoquery1.sql.add('WHERE id = object_id(N' '''' '[dbo].[testa]' '''' ') AND OBJECTPROPERTY(id, '); adoquery1.sql.add('N' '''' 'IsUserTable' '''' ') '); adoquery1.sql.add(' = 1) DROP TABLE [dbo].[testa] '); adoquery1.SQL.Add('CREATE TABLE [dbo].[testb] ( '); adoquery1.SQL.Add(' [sno] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL '); adoquery1.SQL.Add(' ) ON [PRIMARY] '); adoquery1.ExecSQL; end; 發表人 - nick167 於 2004/02/13 18:55:10 發表人 - nick167 於 2004/02/13 19:07:47
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-14 09:06:17 IP:211.76.xxx.xxx 未訂閱
您好: timhuang兄的做法是在資料庫內做的,你在DELPHI做當然會出錯,改成下列  
 
procedure TForm1.Button1Click(Sender: TObject);
Var
  SQLstr: string;
begin
  SQLstr:='IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N''test'') print ''database test exists''' 
          ' else' 
          ' begin ' 
          ' print ''database test not exists''' 
          ' CREATE DATABASE [test]' 
          ' end';
  adoquery1.close;
  adoquery1.SQL.Clear;
  adoquery1.sql.add(SQLstr);
  adoquery1.ExecSQL;
end;
~~應無所住而生其心~~
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-02-15 20:20:46 IP:61.228.xxx.xxx 未訂閱
感謝眾兄弟不厭其煩幫我 內心非常感謝 謝Delphi K.Top 眾位版主
系統時間:2024-04-20 5:49:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!