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

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

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

    xhchc

    危波帆墻,笑談只在桃花上;與誰共尚,風吹萬里浪; 相依相偎,不做黃泉想;莫惆悵,碧波潮生,一蕭自狂放……

     

    通過java動態創建ODBC數據源來訪問DBF文件(轉)

     

    【賽迪網-IT技術報道】好久沒有使用過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   if(df[k].isDirectory()){ //
                因為文件夾中包含DBF文件,所以判斷是文件夾,而不是文件
                System.out.println("===kkkk=="+k+"====="+df[k].getName());
                }
                }
                }
                }

    第一種就是這樣,需要注意的是registry的使用,其實很簡單的,只要把DLL文件放到classpath下就可以了。

    第二種其實更簡單,就是通過另一個開元的類包jdbf.jar,使用方法也很簡單,網上有很多資料,可以查詢。也就不多說了。

    posted on 2009-01-08 14:16 chu 閱讀(170) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    我的鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人无码精品1区2区3区免费看| 亚洲乱码一二三四区乱码| 四虎影视在线看免费观看| 四虎永久在线精品免费影视| 含羞草国产亚洲精品岁国产精品 | 久久久久亚洲国产| 成全影视免费观看大全二| 亚洲熟女综合色一区二区三区| 最近中文字幕无吗免费高清| 亚洲AV无码之国产精品| 日产国产精品亚洲系列| 日本免费网址大全在线观看| 亚洲成a人片在线观看中文app| 成人性生交大片免费看无遮挡| 亚洲欧美日韩一区二区三区| 免费国产成人午夜电影| 久久久久免费视频| 久久久亚洲AV波多野结衣| 好吊妞视频免费视频| 免费无码婬片aaa直播表情| 亚洲精品你懂的在线观看| 99在线观看视频免费| 亚洲无码一区二区三区| 免费a级毛片18以上观看精品| 精品国产污污免费网站入口在线 | 亚洲人成人网站色www| 国产成人一区二区三区视频免费| 亚洲精品人成电影网| 国产乱子伦精品免费无码专区| 国产精品九九久久免费视频| 亚洲一级二级三级不卡| 日日操夜夜操免费视频| a毛看片免费观看视频| 国产成人亚洲精品| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 中国china体内裑精亚洲日本| 国产免费黄色大片| 国产白丝无码免费视频| 久久亚洲AV成人无码国产最大| 亚洲成色WWW久久网站| 午夜私人影院免费体验区|