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,这只是最普通的数据库连接,以后若有更深入的学习,在进行进一步的改进吧~~