一直想整理下jdbc的使用,今天终于有机会了。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。接下来将通过简单的案例实现jdbc的连接。
本案例实现的功能是通过jdbc连接Oracle数据库实现增删改查方法。
- 新建工程,创建名为oracle_test1的类文件,并引入驱动包ojdbc5.jar。创建数据库连接方法conn_ora()。
//创建orcal链接 public static Connection conn_ora(){ Scanner in=new Scanner(System.in); Connection conn=null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn=DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:oracl","root","root"); } catch (Exception e) { e.printStackTrace(); } return conn; }
- 创建数据库关闭方法 cloConn(Connection conn,PreparedStatement ps,ResultSet rs)。
//关闭数据库链接 public static void cloConn(Connection conn,PreparedStatement ps, ResultSet rs) { try { if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(conn!=null){ conn.close(); } } catch (Exception e) { e.printStackTrace(); } }
- 创建数据的增删改查方法。
//修改 public static void ch_ora(){ try { Scanner in=new Scanner(System.in); System.out.println("请输入修改后的用户名称:"); String name=in.next(); System.out.println("请输入要修改的用户id:"); int id=in.nextInt(); String sql="update users set name=? where id=?"; ps=conn_ora().prepareStatement(sql); ps.setString(1, name); ps.setInt(2, id); ps.executeUpdate(); if(ps.executeUpdate()==1){ System.out.println("修改成功!"); } else{ System.out.println("修改失败!"); } } catch (Exception e) { e.printStackTrace(); }finally{ cloConn(conn_ora(),ps,rs); } } //查询 public static void search_ora(){ try { String sql="select name,password from users"; ps=conn_ora().prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ String name=rs.getString("name"); String psw=rs.getString("password"); System.out.println("用户:"+name+"\r"+"密码:"+psw); } } catch (Exception e) { e.printStackTrace(); }finally{ cloConn(conn_ora(),ps,rs); } } //增加 public static void add_ora(){ Scanner in=new Scanner(System.in); int id; String name; String sex; System.out.println("请输入增加的用户Id"); id=in.nextInt(); System.out.println("请输入增加的用户姓名:"); name=in.next(); System.out.println("请输入增加的用户性别:"); sex=in.next(); String sql=" insert into users(id,name,sex)values(?,?,?)"; try { ps=conn_ora().prepareStatement(sql); ps.setInt(1, id); ps.setString(2, name); ps.setString(3, sex); ps.executeUpdate(); if(ps.executeUpdate()==1){ System.out.println("数据添加成功!"); }else{ System.out.println("数据增加失败!"); } } catch (Exception e) { e.printStackTrace(); }finally{ cloConn(conn_ora(),ps,rs); } } //删除 public static void del_ora(){ Scanner in=new Scanner(System.in); int id; System.out.println("请输入删除的用户Id"); id=in.nextInt(); String sql=" delete from users where id=?"; try { ps=conn_ora().prepareStatement(sql); ps.setInt(1, id); ps.executeUpdate(); if(ps.executeUpdate()==1){ System.out.println("数据删除成功!"); }else{ System.out.println("数据删除失败!"); } } catch (Exception e) { e.printStackTrace(); }finally{ cloConn(conn_ora(),ps,rs); } }
- 创建静态变量PreparedStatement和ResultSet,并在main方法中对增删改查方法进行调用。
private static PreparedStatement ps=null; private static ResultSet rs=null; public static void main(String[] args) { //ch_ora();//修改 //search_ora();//查询 //add_ora();//增加 del_ora();//删除 }
public class BaseDao {
private static String driPath="";
private static String url;
private static String uname;
private static String psw;
private static String sql;
//链接数据库
public static Connection getConn(){
Connection conn=null;
try {
Class.forName(driPath);
conn=DriverManager.getConnection(url);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//查询数据
public static void ser_Data(){
try {
PreparedStatement ps=getConn().prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//修改数据
public static void chg_Data(){
try {
PreparedStatement ps=getConn().prepareStatement(sql);
ps.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭数据库链接
public static void cloConn(Connection conn,PreparedStatement ps,
ResultSet rs)
{
try {
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}