<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類來獲?。?br />

    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 閱讀(3160) 評論(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://www.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://www.tkk7.com/Unmi/archive/2007/09/02/142138.html  回復  更多評論
      

    主站蜘蛛池模板: 暖暖免费在线中文日本| 久草免费福利资源站| 69堂人成无码免费视频果冻传媒| 亚洲AV综合色一区二区三区| 三级网站在线免费观看| 亚洲av中文无码乱人伦在线播放| 久久国产免费观看精品| 久久亚洲精品无码AV红樱桃| 99re6在线视频精品免费下载| 亚洲人成网www| 成年人网站免费视频| 亚洲色丰满少妇高潮18p| 免费鲁丝片一级在线观看| 国产亚洲午夜精品| 中文亚洲AV片在线观看不卡| 东方aⅴ免费观看久久av| 亚洲一区精品中文字幕| 成人女人A级毛片免费软件| 亚洲欧洲精品成人久久曰| 波多野结衣中文一区二区免费 | 亚洲国产精品综合一区在线| 日本成年免费网站| 亚洲AV无码一区二区三区网址 | 久久亚洲国产伦理| 99久久精品日本一区二区免费| 亚洲人成色在线观看| 亚洲国产精品13p| 亚洲精品免费视频| 亚洲一区欧洲一区| 精品亚洲一区二区三区在线观看| 日本在线看片免费| 亚洲国产成人手机在线观看| 狠狠亚洲狠狠欧洲2019| 最近免费字幕中文大全视频| 亚洲AV无码专区亚洲AV桃| 国产精品亚洲一区二区三区在线 | 亚洲午夜精品国产电影在线观看| 亚洲Av无码乱码在线znlu| 222www在线观看免费| 特黄aa级毛片免费视频播放| 亚洲大片在线观看|