package com.ziwen.jdbc;
import java.sql.*;
public class JdbcUtil{
//1加载驱动(一次性工作)
static{
try{
Class.forName(“oracle或者Mysql的驱动”);
}catch(Exception e){
e.printStackTrace();
}
}
//2连接数据库
public static Connection getConnection(){
Connection con=null;
try{
con=DriverManager.getConnection(
“连接字符串”,"username","password"
);
}catch(Exception e){
e.printStackTrace();
}
return con;
}
//3释放数据库资源
public static void release(ResultSet rs,Statement stmt,Connection con){
if(rs!=null){
try{rs.close();}catch(SQLException e){打印异常};
}
if(stmt!=null){
try{stmt.close();}catch(SQLException e){打印异常};
}
if(con=null){
try{con.close();}catch(SQLException e){打印异常};
}
}
public static void release(Object o){
if(o instanceof ResultSet){
try{((ResultSet)o).close}catch(SQLException e){打印异常}
}
else if(o instanceof Statment){
try{((Statment)o).close}catch(SQLException e){打印异常}
}
else if(o instanceof Connection){
try{((Connection)o).close}catch(SQLException e){打印异常}
}
}
}
PreparedStatment
1、执行效率上要超过Statement
2、PreparedStatement在类型上要比Statement更清晰一些
3、PreparedStatement的SQL是参数化的,而Statement里面的SQL是单纯的字符串
4、PrepareStatement是预编译的
使用:
1、创建一个PreparedStatment对象
2、传送一个带参数的Sql到数据库
ps=con.PrepareStatement("insert into 表名 values(?,?)");
3、准备若干组参数,并发往数据库
for(int i=0;i
ps.setInt(1,i+10000);
ps.setString(2,”ziwen”+i);
ps.excuteUpdate();
}
元数据:
1、通过元数据,可以精确的处理用户的数据
2、如果没有元数据,有的时候压根就处理不了用户的数据,例如,对用户的表来进行查询,查询出来之后,知道是几个字段,但是这几个字段不知道什么类型,不知道类型那就就不能很精确的去处理。NUMBER=》getInt或者getString 这样类型就不精确。甚至在Select * from表的时候,连几个字段都不知道。
获取元数据:
ResultSetMetadata rm=ResultSet.getMetadata();
里面包含有几个信息:
int column=rm.getColumnCount();
String columnName=rm.getColumnName(i);
rm.getColumnType(i);rm.getColumnTypeName(i);
事务语法:
1、关闭自动提交,开始一个用户的事务
con.setAutoCommit(false);
2、正常的进行若干相关的DB操作
3、如果一切正常用户可以选择提交,也可以选择回滚
con.commit();con.rallback();
4、任何一个操作失败,都会提交失败
其他关于JDBC2.0