目录

JDBC连接Oracle数据库,以及基本的插入查询操作

目录

JDBC连接Oracle数据库,以及基本的插入查询操作

昨晚复习了一下JDBC,发现好多东西都忘了,一些很基础的操作都错误百出。不过最终都解决了,现在总结一下,以免以后再犯同样的错误。

先上代码,这段代码实现的是连接数据库,断开数据库,向数据库插入一条数据,从数据库查询一条数据(其中有事物操作及获得列名并根据列名输出)

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.sql.ResultSetMetaData; public class JDBC { private String user; private String pass; private String url; private Connection conn= null;//连接对象 private ResultSet rs = null;//结果集对象 private Statement sm = null; /**

  • 构造函数获得数据库用户名和密码
  • @param user
  • @param pass / public JDBC(String user,String pass){ this.user =user; this.pass = pass; this.url = “jdbc:oracle:thin:@172.16.1.70:1521:orcl”; } /*
  • 连接数据库
  • @return / public Connection createConnection(){ String sDBDriver = “oracle.jdbc.driver.OracleDriver”; try{ Class.forName(sDBDriver).newInstance(); conn = DriverManager.getConnection(url,user,pass); } catch(Exception e){ System.out.println(“数据库连接失败”); e.printStackTrace(); } return conn; } /*
  • 关闭数据库
  • @param conn / public void closeConnection(Connection conn){ try{ if(conn != null){ conn.close(); } } catch(Exception e){ System.out.println(“数据库关闭失败”); e.printStackTrace(); } } /*
  • 插入数据
  • @param insert 插入语句
  • @return / public int insert(String insert){ conn = createConnection(); //String insert = “insert into t_department values(‘D004’,‘金融部’)”; int re = 0; try{ conn.setAutoCommit(false);//事物开始 sm = conn.createStatement(); re = sm.executeUpdate(insert); if(re < 0){ //插入失败 conn.rollback(); //回滚 sm.close(); closeConnection(conn); return re; } conn.commit(); //插入正常 sm.close(); closeConnection(conn); return re; } catch(Exception e){ e.printStackTrace(); } closeConnection(conn); return 0; } /*
  • 查询语句
  • 返回结果集
  • @param select
  • @return / public ResultSet selectSql(String select){ conn = createConnection(); try{ sm = conn.createStatement(); rs = sm.executeQuery(select); return rs; } catch(Exception e){ e.printStackTrace(); } return null; } /*
  • 根据结果集输出
  • @param rs */ public void printRs(ResultSet rs){ int columnsCount = 0; boolean f = false; try{ if(!rs.next()){ return; } ResultSetMetaData rsmd = rs.getMetaData(); columnsCount = rsmd.getColumnCount();//数据集的列数 for(int i = 0; i < columnsCount; i++){ System.out.print(rsmd.getColumnLabel(i+1)+"/t"); //输出列名 } System.out.println(); while(!f){ for(int i = 1;i <= columnsCount; i++){ System.out.print(rs.getString(i)+"/t"); } System.out.println(); if(!rs.next()){ f = true; } } rs.close(); } catch(Exception e){ e.printStackTrace(); } closeConnection(conn); } public static void main(String[] args){ JDBC jDBC = new JDBC(“www”,“www”); //Connection con = jDBC.createConnection(); String insert = “insert into t_department values(‘D005’,‘外交部’)”; System.out.println(jDBC.insert(insert));//插入成功 String select = “select * from t_department”; jDBC.printRs(jDBC.selectSql(select)); } }

在连接数据库时犯了两个低级错误,

1.忘记导入ojdbc14.jar包。

导入包的方法:

1.右击要导入jar包的项目,点properties

2.左边选择java build path,右边选择libraries

3.选择add External jars

4.选择Oracle的按照路径下的,例如

…/oracle/product/10.2.0/server/jdbc/lib

下的ojdbc14.jar

2.在this.url = “jdbc:oracle:thin:@172.16.1.70:1521:orcl”;这条语句中的@符写成了中文的@符号

杯具啊,这两个失误忙了我半晚上!

当然在解决完这两问题后,一切就如飞流直下一般。

ok,这只是最普通的数据库连接,以后若有更深入的学习,在进行进一步的改进吧~~