Java JDBC操作

JAVA使用JDBC访问数据库的步骤:
1. 得到数据库驱动程序
2. 创建数据库连接
3. 执行SQL语句
4. 得到结果集
5. 对结果集做相应的处理(增,删,改,查)
6. 关闭资源:这里释放的是DB中的资源

方法:
DriverManager:这个是一个实现类,它是一个工厂类,用来生产Driver对象的
这个类的结构设计模式为工厂方法
Driver:这是驱动程序对象的接口,它指向一个实实在在的数据库驱动程序对象,那么这个数据库驱动程序对象是从哪里来的呢?
DriverManager工厂中有个方法:getDriver(String URL),通过这个方法可以得到驱动程序对象,这个方法是在各个数据库厂商按JDBC规范设计的数据库驱动程序包里的类中静态实现的,也就是在静态块中
Connection:这个接口可以制向一个数据库连接对象,那么如何得到这个连接对象呢?
是通过DriverManager工厂中的getConnection(String URL)方法得到的
Statement:用于执行静态的SQL语句的接口,通过Connection中的createStatement方法得到的
Resultset:用于指向结果集对象的接口,结果集对象是通过Statement中的execute等方法得到的

驱动:
数据库厂商提供连接数据库类
class12.jar  9i
ojdbc14.jar  oracle10g
ojdbc5或ojdbc6 oracle11g

public class ConnOracle {
//连接数据库
public static void getConnection(){
Connection conn = null; 
String className = "oracle.jdbc.driver.OracleDriver";//驱动名
String url = "jdbc:oracle:thin:@localhost:1521:orcl";// 数据库的URL
String user = "scott";
String password = "tiger";
//1.加载驱动 使用反射技术 主动加载驱动 并且生成了该类对应的Class对象
try{
Class.forName(className);
//2.创建连接   Socket
conn = DriverManager.getConnection(url, user, password);
}catch(ClassNotFoundException e){
System.out.println("驱动类没有找到");
e.printStackTrace();
}catch(SQLException e){
System.out.println("连接数据库失败");
e.printStackTrace();
}
                
Category category = new Category();
String sql = "select * from category where cid=?";
// 3.建立通道
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, cid);
} catch (SQLException e) {
System.out.println("建立通道失败");
e.printStackTrace();
}
// 4.执行
// 如果sql 语句是dml 语句 返回值 是dml语句影响的行数
// 如果sql 语句是ddl 语句 返回值是0
ResultSet rs = null;
try {
rs = pstmt.executeQuery();// 执行DQL语句 executeUpdate() 执行非DQL
while (rs.next()) {
category.setCid(rs.getInt(1));
category.setCname(rs.getString(2));
category.setCdesc(rs.getString(3));
}

} catch (SQLException e) {
System.out.println("修改商品种类失败");
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 5.关闭
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
}
}
}

 





 

猜你喜欢

转载自even-ing.iteye.com/blog/2202809