乖,别哭的薄壳
~一份耕耘,一份收获~
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.blogjava.net/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 小祝 阅读(3274) 评论(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 | 梅颖
这个风格还满好看的,呵呵,向左走,向右走。。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: