精彩的人生

          好好工作,好好生活

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
          剛剛被一個(gè)比較麻煩的問題所困擾。這個(gè)問題就是如何判斷數(shù)據(jù)中某張表是否存在,如果不存在則創(chuàng)建它。

          恩,我先用了最笨的方法,就是寫個(gè)select從表中讀數(shù)據(jù),捕獲異常的同時(shí)就知道了改表沒有創(chuàng)建。

          此法不通,因?yàn)檫@個(gè)時(shí)候的異常似乎被認(rèn)定為了系統(tǒng)錯(cuò)誤,于是后面創(chuàng)建表的代碼被忽略了。

          大部分人的做法類似于select system.table where tabblename='***',反正我曾經(jīng)用類似的句子查詢過DB2,是成功的。

          但是,我現(xiàn)在面對(duì)的不是DB2,而是7個(gè)不同的數(shù)據(jù)庫,基本上常用的都包括了。是不是每類數(shù)據(jù)庫都有上面的查詢語句呢?是否查詢語句相似呢?于是我挑了hsqldb,也是當(dāng)前的默認(rèn)數(shù)據(jù)庫,來尋找解決辦法。

          很遺憾,我沒有找到類似前面的句子。正當(dāng)我打算放棄的時(shí)候發(fā)現(xiàn)了下面的代碼,這段代碼是我從一個(gè)國(guó)外的論壇中找到的,盡管我不知道它是不是萬能鑰匙,但是他這次對(duì)我而言確成了萬能的:

          java.sql.Connection?con?=?getYourConnection();
          ???
          ResultSet?rs?
          =?con.getMetaData().getTables(null,?null,?"yourTable",?null);
          if?(rs.next())?{
          //yourTable?exist
          }
          else?{
          //yourTable?not?exist
          }

          ?

          posted on 2006-06-28 17:12 hopeshared 閱讀(3035) 評(píng)論(3)  編輯  收藏 所屬分類: Java

          Feedback

          # re: 一段很好用的判斷數(shù)據(jù)庫中某張表是否存在的代碼 2006-06-28 22:35 兵臨城下
          真的有用嗎!  回復(fù)  更多評(píng)論
            

          # re: 一段很好用的判斷數(shù)據(jù)庫中某張表是否存在的代碼 2006-06-29 14:20 hopeshared
          昨天的情況是系統(tǒng)中沒有這張表,所以用的挺好。不記得我有沒有通過重啟服務(wù)器來做測(cè)試了。。。因?yàn)檫@段代碼是服務(wù)器的插件。

          恩,今早打開服務(wù)器的結(jié)果是error,說數(shù)據(jù)表已經(jīng)存在的情況下創(chuàng)建表。

          看來這個(gè)用起來也不是很好啊

            回復(fù)  更多評(píng)論
            

          # re: 一段很好用的判斷數(shù)據(jù)庫中某張表是否存在的代碼 2009-11-30 22:53 黃花菜
          感謝啊,哈哈 我的QQ:331337390,得多多向你請(qǐng)教啊,哈哈  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 肥乡县| 罗甸县| 井冈山市| 高州市| 溧水县| 鄄城县| 威信县| 惠水县| 揭阳市| 桐柏县| 沈丘县| 当涂县| 时尚| 华阴市| 浦县| 东兰县| 福鼎市| 曲阳县| 亚东县| 濮阳市| 玛多县| 新安县| 马关县| 乌审旗| 新田县| 普兰县| 繁峙县| 奉新县| 汤阴县| 巫溪县| 施甸县| 南和县| 张北县| 海安县| 集安市| 吉林市| 平谷区| 台湾省| 望谟县| 佛山市| 高平市|