afrag  
          記錄學(xué)習(xí)和成長的歷程
          日歷
          <2006年1月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234
          統(tǒng)計
          • 隨筆 - 9
          • 文章 - 5
          • 評論 - 2
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          積分與排名

          • 積分 - 10208
          • 排名 - 2378

          最新評論

          閱讀排行榜

          評論排行榜

           

                 有同事問到在程序中怎樣知道數(shù)據(jù)庫表中那些字段是主鍵。當(dāng)時不知道,晚上回來看了看JDK的文檔。

                 在使用JDBC來查詢數(shù)據(jù)庫的時候,通常的步驟是:

          1.  注冊驅(qū)動程序

          2.  獲取數(shù)據(jù)庫連接

          3.  執(zhí)行查詢語句

          4.  關(guān)閉連接。

                 在獲得數(shù)據(jù)庫連接后,就可以通過getMetaData()方法來獲取DatabaseMetaData;然后通過DatabaseMetaDatagetPrimaryKeys ()方法來獲取主鍵的信息。

                 下面是我做的示例程序,該程序在JBuilder2005oracle8i下通過:
          import java.sql.*;

          import javax.sql.*;

          public class TestJDBC {

              public TestJDBC() {

              }

           

              public static void main(String[] args) throws SQLException {

                  Connection con = null;

                  Statement st = null;

                  ResultSet rst = null;

                  try{

                               //注冊數(shù)據(jù)庫驅(qū)動程序

                      Class.forName("oracle.jdbc.driver.OracleDriver");

                               //獲取數(shù)據(jù)庫連接

                      con = DriverManager.getConnection("jdbc:oracle:thin:@10.60.203.80:1521:TestDB","123","123");

                               //獲取主鍵信息

                      rst = con.getMetaData().getPrimaryKeys(null,null,"USER");

                               //打印主鍵信息

                      if (!rst.isAfterLast()) {

                          rst.next();

                          System.out.println(rst.getString("TABLE_NAME") + "  " +

                                             rst.getString("COLUMN_NAME"));

                      }

                  }

                  catch (Exception e){

                      System.out.println(e.getLocalizedMessage());

                  }

                  finally{

                      try{

                                      //關(guān)閉連接

                          if (rst != null)

                              rst.close();

                          if (con != null)

                              con.close();

                      }

                      catch (SQLException e){

                          throw e;

                      }

                  }

           

              }

          }

           

          上面的程序中,在獲取主鍵信息的時候,語句

          rst = con.getMetaData().getPrimaryKeys(null,null,"USER");

          用來獲取主鍵信息。關(guān)于該函數(shù)的詳細(xì)信息,請參閱JDK的文檔。這里要說的是,在測試中發(fā)現(xiàn)第三個參數(shù)(數(shù)據(jù)庫表名)是大小寫敏感的,如果寫成user是查不到結(jié)果的。

          posted on 2006-01-20 10:52 afrag 閱讀(1539) 評論(1)  編輯  收藏 所屬分類: Java 技術(shù)
          評論:
          • # re: 在java程序中如何知道數(shù)據(jù)庫表的主鍵  馮烽 Posted @ 2007-03-21 20:27
            泥沙的年代內(nèi)農(nóng)戶廠農(nóng)村程度地面  回復(fù)  更多評論   

           
          Copyright © afrag Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 景洪市| 佛坪县| 梨树县| 平武县| 喀喇| 兰溪市| 吉林市| 莫力| 泌阳县| 肃北| 灯塔市| 宜阳县| 宁明县| 兴海县| 饶阳县| 襄城县| 深圳市| 南丹县| 昭苏县| 门源| 洱源县| 襄樊市| 遂昌县| 九龙城区| 麦盖提县| 柳州市| 马鞍山市| 锡林郭勒盟| 桃江县| 鸡东县| 手机| 永福县| 体育| 桦川县| 揭阳市| 阿拉尔市| 临西县| 三明市| 嵊州市| 博兴县| 海南省|