<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://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  回復  更多評論
      

    主站蜘蛛池模板: 亚洲高清一区二区三区| 亚洲一区二区三区高清| 亚洲精品无码久久久久YW| 99久久精品日本一区二区免费 | 成人午夜免费视频| 免费中文字幕不卡视频| 日日摸日日碰夜夜爽亚洲| 免费a级毛片在线观看| 男女超爽视频免费播放| 免费人成在线观看视频播放| 久久亚洲色WWW成人欧美| 免费一级毛片在播放视频| 九九视频高清视频免费观看| 亚洲无人区一区二区三区| 一级女人18毛片免费| 亚洲区精品久久一区二区三区| 国产免费丝袜调教视频| 亚洲 欧洲 视频 伦小说| 国产精品色午夜视频免费看| 窝窝影视午夜看片免费| 亚洲动漫精品无码av天堂| 久久WWW免费人成一看片| 亚洲一区二区观看播放| 免费永久看黄在线观看app| 国产精品极品美女自在线观看免费| 亚洲精品国偷自产在线| 18观看免费永久视频| 亚洲国产精品成人AV在线| 亚洲欧洲久久av| 2021在线观看视频精品免费| 久久亚洲精品无码gv| 国产亚洲综合网曝门系列| 99视频全部免费精品全部四虎| 日韩欧美亚洲中文乱码| 亚洲成AV人片在线观看| 最近高清国语中文在线观看免费| 一级做性色a爰片久久毛片免费| 亚洲天天在线日亚洲洲精| 国产精品酒店视频免费看| 一个人看的www免费视频在线观看| 亚洲国产成人精品电影|