类名:prepareStatement | 该类实现带参数的sql处理,可以写一条语句,设置多条参数,减少了SQL语句的写作。如插入多行数据、修改多行数据 |
类示例: | pstmt = conn.prepareStatement("insert into mytest_table values (?, ?)"); pstmt.setInt(1, 1); pstmt.setString(2, "row 1"); pstmt.addBatch();
pstmt.setInt(1, 2); pstmt.setString(2, "row 2"); pstmt.addBatch();
pstmt.executeBatch(); |
DataSource | 该接口代表一个数据库,其实现方式有:通过weblogic通应用服务器建立好他,然后按客户端调用EJB的方式调用。一种是通过原生的驱动程序实现这个接口的对象。 |
数据源地调用代码:
| OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:@localhost:1521:maximo"); ods.setUser("java"); ods.setPassword("java123456"); Connection conn = ods.getConnection(); |
数据源能过JNDI查找实现 | Properties prop=new Properties(); prop.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory"); prop.put(javax.naming.Context.PROVIDER_URL,"t3://localhost:7001"); InitialContext ctx= new InitialContext(prop); DataSource dataSource=(DataSource)ctx.lookup("maximo"); Connection conn = dataSource.getConnection(); |
定义列类型 | defineColumnType。这是oracle的OracleStatement提供的一个方法,可以把相关类型从其他类型转到字符串型,减少java转换的工作量,转换在数据库内查询时完成,加快运行速度。 |
| ((OracleStatement)stmt).defineColumnType (1, Types.VARCHAR, 7);
ResultSet rset = stmt.executeQuery ("select employee_id from employees"); while (rset.next ()) { System.out.println (rset.getString (1)); } |
CallableStatement | 此对象用来调用存储过程,如果是过程或函数输出参数,需要用方法注册: |
CallableStatement | CallableStatement procinout = conn.prepareCall ("begin procinout (?, ?); end;"); procinout.registerOutParameter (1, Types.INTEGER); procinout.registerOutParameter (2, Types.VARCHAR); procinout.setInt (1, 404); procinout.setString (2, "North Pole"); procinout.execute (); System.out.println ("\ndump table regions after calling to procinout--" + "insert 404 North Pole\n"); |
Statement | 用来查询与执行DDL、DCL。 rset.moveToInsertRow();
// Assign the new values rset.updateInt (1, employeeId); rset.updateString (2, firstName); rset.updateString (3, lastName); rset.updateString (4, email); rset.updateString (5, phone); rset.updateDate (6, date); rset.updateString (7, jobid); rset.updateInt (8, sal); rset.updateInt (9, commi); rset.updateInt (10, mgrid); rset.updateInt (11, deptid);
// Insert the new row to database rset.insertRow();
//update for a line while (rset.next ()) { // save the old value salary = rset.getInt (4); // update the row rset.updateInt (4, salary + raise); // flush the changes to database rset.updateRow (); // show the changes System.out.println (rset.getInt(1)+" "+rset.getString(2)+" "+ rset.getString(3) + " " + salary+" -> "+rset.getInt(4)); } |
DatabaseMetaData | 获得相关的数据库参数 DatabaseMetaData dbmd = conn.getMetaData(); |
评论