乖,別哭的薄殼
          ~一份耕耘,一份收獲~
          posts - 23,comments - 260,trackbacks - 0

          一個簡單的用jdbc操作數據庫的例子,有時候我們處理一些小問題的時候會發現很有用.

          這是用來從一個Access的數據庫文件area.mdb(一個全國省份城市的數據庫)中提取出我需要的信息到MS SQLServer 2000數據庫里的例子.

          package com.test;

          import java.io.IOException;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.sql.Statement;

          /**
          ?*
          ?* CopyRight (C) http://www.aygfsteel.com/ilovezmh? All rights reserved.<p>
          ?*
          ?* WuHan Inpoint Information Technology Development,Inc.<p>
          ?*
          ?* Author zhu<p>
          ?*
          ?* @version 1.0??? 2007-1-17
          ?*
          ?* <p>Base on : JDK1.5<p>
          ?*
          ?*/

          public class City {
          ?
          ?static String driver1="sun.jdbc.odbc.JdbcOdbcDriver";
          ?static String driver2="net.sourceforge.jtds.jdbc.Driver";
          ?static String url1="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\TDdownload\\area\\area.mdb";
          ?static String url2="jdbc:jtds:sqlserver://localhost:1433/test;SelectMethod=cursor;characterEncoding=GBK";
          ?
          ?public static void main(String arg[]) throws IOException,SQLException{
          ??
          ??
          ??Connection conn1=null;
          ??Connection conn2=null;
          ??Statement ps1=null;
          ??//Statement ps2=null;
          ??ResultSet rs1=null;
          ??//ResultSet rs2=null;
          ??String sql1=null;
          ??String sql2=null;
          ??PreparedStatement pstmt =null;
          ??
          ??try{
          ???Class.forName(driver1);
          ???Class.forName(driver2);
          ???conn1 = DriverManager.getConnection(url1,"","");
          ???conn2= DriverManager.getConnection(url2,"sa","sa");
          ???ps1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
          ???//ps2 = conn2.createStatement();
          ??}
          ??catch(ClassNotFoundException e){
          ???System.out.print(e);
          ??}
          ??catch (SQLException e) {
          ???// TODO 自動生成 catch 塊
          ???e.printStackTrace();
          ??}
          ??
          ??try{???
          ???sql1="select * from area";
          ???rs1 = ps1.executeQuery(sql1);
          ???sql2 = "insert into tbcity(code,name,parentid,type) values (?,?,?,?)";
          ???pstmt=conn2.prepareStatement(sql2);
          ???
          ???int code=0;
          ???int parentid=0;
          ???String name=new String();
          ???while(rs1.next()){????
          ????code=rs1.getInt(2);
          ????name=rs1.getString(3);
          ????parentid=rs1.getInt(4);
          ????//sql2="insert into TBCITY(code,name,parentid,type) values ("+code+",'"+name+"',"+parentid+",3)";
          ????//ps2.executeUpdate(sql2);
          ????pstmt.setInt(1,code);
          ????pstmt.setString(2, name);
          ????pstmt.setInt(3,parentid);
          ????pstmt.setInt(4, 3);
          ????pstmt.addBatch();
          ???}???
          ???pstmt.executeBatch(); ???
          ?????
          ???System.out.println("轉換完成!謝謝使用");
          ???ps1.close();
          ???//ps2.close();
          ???pstmt.close();
          ???conn1.close();
          ???conn2.close();
          ??}
          ??catch(Exception e){
          ???System.out.print(e);
          ??}
          ??
          ?}
          ?
          }

          posted on 2007-02-01 14:09 小祝 閱讀(3297) 評論(9)  編輯  收藏 所屬分類: java技術

          FeedBack:
          # re: 一個用jdbc操作數據庫的簡單例子
          2007-02-01 22:40 | 施偉
          支持支持!  回復  更多評論
            
          # re: 一個用jdbc操作數據庫的簡單例子
          2007-02-02 11:24 | 梅穎
          你占了我的位置。。。嗚嗚嗚  回復  更多評論
            
          # re: 一個用jdbc操作數據庫的簡單例子
          2007-02-02 13:05 | 小祝
          ...原來在搶位置啊.  回復  更多評論
            
          # re: 用jdbc操作數據庫的簡單例子
          2007-02-05 19:51 | 睿不可當
          不錯
          我想能不能結合你上一篇
          java讀配置文件(xml、property)的簡單例子
          把連接的信息寫在配置文件(xml、property)中就完美勒  回復  更多評論
            
          # re: 用jdbc操作數據庫的簡單例子
          2007-02-05 21:28 | 小祝
          謝謝支持和建議啊!
          我是這么想的,分開來講算是不同的知識點,合到一起的話有些不太好,我想別人也不會寫這樣的配置文件去連數據庫的,現在已經有很方便的東西了。呵呵。
          關于事務的問題,第一個想法和我先想的差不多,好像是可以,但覺得會有更好的方法。
          至于借助于其它的框架來做事務當然很方便,不過這本身就是一個很簡單的東西。再把框架拿起來的話就失去了他的意義,對吧。  回復  更多評論
            
          # re: 用jdbc操作數據庫的簡單例子
          2007-02-05 22:22 | 施偉
          JDBC是基礎,務必通,透,精  回復  更多評論
            
          # re: 用jdbc操作數據庫的簡單例子
          2007-02-06 11:42 | 睿不可當
          今天上午我突然想到你的這個例子有種想法
          對于你的第二個作操是否能批量執行呢來提高效率
          sql2="insert into TBCITY(code,name,parentid,type) values ("+code+",'"+name+"',"+parentid+",3)";
          ps2.executeUpdate(sql2);//插入到表tbcity中
          jdbc3個接口用來處理sql的執行,是Statement PreparedStatement CallableStatement
          提供適當的Statement接口批量執行sql從數據庫批量獲取數據
          PreparedStatement 比Statement性能要好
          主要體現在一個sql語句多次重復執行的情況
          PreparedStatemnt只編譯解析一次而Statement每次編譯一次.
          批量修改數據庫
          Statement 提供了方法addBatch(String)和executeBatch()
          調用方法為
          stmt.addBatch("insert.....");
          stmt.addBatch("update.....")
          stmt.executeBatch();
          也可以用PreparedStatement從而更好的提高性能.
          pstmt=conn.preparedStatement("insert into tbcity(......) values(....?)");
          pstmt.setString(1,"aaa");
          ...
          pstmt.addBatch();
          pstmt.setString(1,"bbb");
          ...
          pstmt.addBatch();
          .....
          pstmt.executeBatch();  回復  更多評論
            
          # re: 用jdbc操作數據庫的簡單例子
          2007-02-06 13:06 | 小祝
          @睿不可當
          嗯,我按你說的這種方式改進了下,速度還不錯。thank you!  回復  更多評論
            
          # re: 用jdbc操作數據庫的簡單例子
          2007-02-07 10:48 | 梅穎
          這個風格還滿好看的,呵呵,向左走,向右走。。  回復  更多評論
            
          主站蜘蛛池模板: 永兴县| 大埔区| 道孚县| 冀州市| 湘西| 横峰县| 林芝县| 鄂托克前旗| 石泉县| 七台河市| 北海市| 中西区| 光泽县| 南雄市| 海口市| 平乐县| 东兰县| 固始县| 乐陵市| 宜昌市| 巩义市| 宿松县| 和平区| 盐池县| 扶沟县| 三门县| 景宁| 武汉市| 徐水县| 田阳县| 清苑县| 剑河县| 北宁市| 蕲春县| 神木县| 宽城| 湖州市| 雅安市| 周至县| 保亭| 鄂温|