<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    好久沒有使用過VFP了,記憶中似乎也只是在學校中使用過。這次出差,客戶給了一大堆dbf文件,要求處理。
    無奈啊,顧客就是上帝。雖然可以通過許多途徑來處理,但是總想用java語言來處理。最終還是需要通過JNI來處理,不過用到了一個開元的操作注冊表的registry-3.1.3,使用后,發現蠻簡單的,網上已有很多資料介紹,就不多說了。
    想了兩種解決方法,第一種比較麻煩,但是看網上很多人問,就也總結了出來,其實就是通過java動態創建ODBC數據源來訪問DBF文件,這個就需要用到registry,來修改注冊表了。

    其實,主要是動態創建ODBC數據源,開始很簡單,可以手工設置一次數據源,當然也可以通過程序直接生成,問題都不大。下面只說怎樣修改。

    import com.ice.jni.registry.RegStringValue;
    import com.ice.jni.registry.Registry;
    import com.ice.jni.registry.RegistryKey;


    public class TestC {
     public static void main(String[] str) {
            try {
             
                  RegistryKey child = Registry.HKEY_CURRENT_USER
                          .openSubKey("Software").openSubKey("ODBC").openSubKey("ODBC.INI").openSubKey("data_0930",RegistryKey.ACCESS_ALL);//操作權限是通過RegistryKey來獲取的。
                  String de = "F:\\commony\\test\\data\\070901";  //我的DBF數據的目錄
    //其中,data_0930是我第一次設置的數據源的一個注冊表的名稱
                  System.out.println(child.getStringValue("SourceDB"));
                 child.setValue(new RegStringValue(child,"SourceDB",de));
                  System.out.println(child.getFullName());
            } catch (Exception e) {
                  e.printStackTrace();
            }
        }

    }
    然后就是通過,sun.jdbc.odbc.JdbcOdbcDriver來獲取數據,

    import java.sql.DriverManager;
    import java.sql.*;
    public class TestOdbc {
      public TestOdbc() {
      }
      public static void main(String[] args) {
        java.sql.Connection conn = null;
        java.sql.PreparedStatement pt = null;
        java.sql.ResultSet rs = null;
        try {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch (ClassNotFoundException ex1) {
        }
        try {
          conn = DriverManager.getConnection("jdbc:odbc:data_0930", "", "");
          pt = conn.prepareStatement(" select *  from test_table");
          rs = pt.executeQuery();
          while(rs.next()){
            System.out.println("==="+rs.getString(1));
            System.out.println("==="+rs.getString(2));
            System.out.println("==="+rs.getString(3));
            System.out.println("==="+rs.getString(4));
            System.out.println("==="+rs.getString(5));
          }
        }
        catch (SQLException ex) {
        }
      }
    }

    其實真的很簡單。
    其實,文件名,是可以動態獲取的,一般可以通過java中的File類來獲取:

    import java.io.File;


    public class TestD {

     public static void main(String[] args){
      File file = new File("F:\\commony\\test\\data");
      File[] df = file.listFiles();
      for(int k =0;k<df.length;k++){
       if(df[k].isDirectory()){ //因為文件夾中包含DBF文件,所以判斷是文件夾,而不是文件
        System.out.println("===kkkk=="+k+"====="+df[k].getName());
       }
      }
     }
    }

    第一種就是這樣,需要注意的是registry的使用,其實很簡單的,只要把DLL文件放到classpath下就可以了。
    第二種其實更簡單,就是通過另一個開元的類包jdbf.jar,使用方法也很簡單,網上有很多資料,可以查詢。也就不多說了。
     

    posted on 2007-09-30 16:38 TrampEagle 閱讀(3159) 評論(4)  編輯  收藏 所屬分類: 學習體會

    Feedback

    # re: 如何使用java動態創建ODBC數據源 2007-09-30 16:44 BeanSoft
    Access 是通過 ODBC 連接的. Excel 也可以. 甚至可以動態構造連接字符串:

    這樣可以直接連接到 Access 數據庫文件.

    jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\mydata.mdb

    類似的 Excel 文件也可以用類似方法:

    jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=.\mydata.xls

    DBF 應該也可以這樣來做.  回復  更多評論
      

    # re: 如何使用java動態創建ODBC數據源 2007-09-30 16:59 TrampEagle
    @BeanSoft
    呵呵,謝謝熱心的BeanSoft,發現BeanSoft很活躍的,呵呵。
    DBF操作時,有很多版本不一致的情況,所以有的是可以的,但并不是所有版本的DBF都可以這樣操作,我試過一些,但是也不想深入研究。  回復  更多評論
      

    # re: 如何使用java動態創建ODBC數據源 2007-09-30 17:09 Unmi
    看 純Java程序讀取DBF文件型數據庫 http://m.tkk7.com/Unmi/archive/2006/03/04/124078.html

    用xBaseJ用jdbc的方式處理dbf文件比較方便,可用sql語句,jdbf.jar更像是在處理文件的讀取

    ODBC基本被現代的數據庫程序所摒棄,因為想做成很通用,所以必然性能會差很多的  回復  更多評論
      

    # re: 如何使用java動態創建ODBC數據源 2007-09-30 17:14 Unmi
    關于Registry的使用,我也寫過一篇 在 Java 中操作 Windows 注冊表
    http://m.tkk7.com/Unmi/archive/2007/09/02/142138.html  回復  更多評論
      

    主站蜘蛛池模板: 亚洲视频免费观看| 久久99九九国产免费看小说| 一个人看的www免费在线视频| 国产一区二区免费| 成人毛片18女人毛片免费| 国产福利电影一区二区三区,亚洲国模精品一区 | 亚洲成a人片在线不卡一二三区 | 久久99国产亚洲高清观看首页| 亚洲91精品麻豆国产系列在线 | 杨幂最新免费特级毛片| 免费精品国产自产拍在| 亚洲av日韩av无码av| 噼里啪啦电影在线观看免费高清| 亚洲伊人久久精品影院| 国产AV日韩A∨亚洲AV电影| 69式互添免费视频| 亚洲综合熟女久久久30p| 日韩成人精品日本亚洲| 国产精品69白浆在线观看免费| 国产成人精品日本亚洲| 男人进去女人爽免费视频国产| 亚洲av中文无码| 亚洲午夜精品一区二区公牛电影院 | 高潮毛片无遮挡高清免费视频| 999国内精品永久免费视频| 亚洲性日韩精品国产一区二区| 国产JIZZ中国JIZZ免费看| 又黄又爽的视频免费看| 亚洲中文无码亚洲人成影院| 在线观看免费中文视频| 久久亚洲精品AB无码播放| a级毛片免费全部播放| 国产成人亚洲综合无码| 日韩精品无码一区二区三区免费| 精品久久久久久亚洲| 九九久久国产精品免费热6| 国产亚洲人成网站观看| 蜜桃视频在线观看免费网址入口| 美女扒开屁股让男人桶爽免费| 亚洲av永久无码精品漫画| a在线观看免费网址大全|