JDBC
来源:互联网 发布:java架构师 实战篇 编辑:程序博客网 时间:2024/05/21 06:23
操作数据库的三种操作
数据库连接被用于向数据库服务器发送命令和SQL 语句,在连接建立后,
需要对数据库进行访问,执行sql语句
在java.sql包中有 3个接口分别定义了对数据库的调用的不同方式:
•Statement(接口)
l通过调用Connection 对象的createStatement 方法创建该对象
l该对象用于执行静态的SQL 语句,并且返回执行结果
lStatement 接口中定义了下列方法用于执行SQL 语句:
•int excuteUpdate(String sql) (针对DDL和DML操作)
•ResultSet excuteQuery(String sql) (针对DQL操作)
public void createStatement(){String url="jdbc:mysql://localhost:3306/test";Connection conn=null;Statement stmt=null;ResultSet rs=null;try {Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection(url, "root",""); String sql="select * from test"; stmt=conn.createStatement(); rs=stmt.executeQuery(sql);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
•PrepatedStatement(implements Statment)
Statement的不安全性
PreparedStatement VS Statement
l可以通过调用Connection对象的preparedStatement()方法获取PreparedStatement对象
lPreparedStatement接口是Statement的子接口,它表示一条预编译过的SQL语句
lPreparedStatement对象所代表的SQL语句中的参数用问号(?)来表示
,调用PreparedStatement对象的setXXX()方法
来设置这些参数.setXXX()方法有两个参数,第一个参数是要设置的SQL
语句中的参数的索引(从1开始),第二个是设置的SQL语句中的参数的值
String sql ="select * from test where id=?";PreparedStatement pstmt=conn.prepareStatement(sql);pstmt.setInt(1,1);
•CallableStatement (implements PrepatedStatment)
l当不直接使用SQL语句,而是调用数据库中的Store Procedure时,
要用到CallableStatement(主要针对oracle等大型数据库)
ResultSet
通过调用Statement 对象的excuteQuery()方法创建该对象
ResultSet对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet接口由数据库厂商实现
ResultSet对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过 ResultSet对象的 next()方法移动到下一行
ResultSet接口的常用方法:
•boolean next()
•getString()......
可滚动的ResultSet(了解)
l要使用可滚动的结果集,必须使用不同于前面所定义的Statement:
l//创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。
Statement stmt = conn.createStatement(type,concurrency);PreparedStatement stmt = conn.prepareStatement(sql,type,concurrency)
l对Mysql数据库无效:总是可以前后滚动l对Oralce数据有用
•next()
•previous()
•first()
•last()
•absolute()
•relative()
•beforeFirst()
•afterLast()
•isFirst()
•isLast()
•isBeforeFirst()
•isAfterLast()
•
getXxxx方法 Xxxx数据类型
SQL与Java数据类型的对应关系
总结
java.sql.DriverManager用来装载驱动程序,获取数据库连接。
java.sql.Connection完成对某一指定数据库的联接,获取数据库操作对象
java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。
•Java.sql.PreparedSatement用于执行预编译的sql声明
•Java.sql.CallableStatement用于执行数据库中存储过程的调用
java.sql.ResultSet对于给定声明取得结果的途径
JDBCUtils
package cn.itcast.mysql.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * mysql数据库服务的数据库jdbc操作的帮助类 * @author Administrator * */public final class JDBCUtils {private static final String URL = "jdbc:mysql://localhost:3306/dbjdbc";private static final String USER = "root";private static final String PASSWORD = "root";static {try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}/** * 得到连接对象 */public static Connection getConnection() {Connection conn = null;try {conn = DriverManager.getConnection(URL, USER, PASSWORD);} catch (SQLException e) {e.printStackTrace();}return conn;}/** * 关闭指定的资源 */public static void closeResource(Connection conn, Statement stmt, ResultSet rs) {if(rs!=null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt!=null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}/** * 关闭指定的资源 */private static void closeResource2(Connection conn, Statement stmt, ResultSet rs) {try {if(rs!=null) {rs.close();}} catch (SQLException e) {e.printStackTrace();} finally {try {if(stmt!=null) {stmt.close();}} catch (SQLException e) {e.printStackTrace();} finally {try {if(conn!=null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}}}/** * 关闭指定的资源 * * 必须严重不行 */private static void closeResource3(Connection conn, Statement stmt, ResultSet rs) {if(rs!=null) {//rs=nulltry {rs.close();} catch (SQLException e) {e.printStackTrace();} finally {if(stmt!=null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();} finally {try {if(conn!=null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}}}}}}
0 0
- jdbc
- JDBC
- jdbc
- JDBC
- jdbc
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- jdbc
- JDBC
- JDBC
- jdbc
- 设计模式 经典书籍必备推荐
- 如何减少silverlight XAP包的尺寸
- ac自动机、矩阵乘法
- MPI实现有向图所有点间最短路径
- Android Navigation Drawer(导航抽屉)
- JDBC
- 如何判断照片曝光是否准确?
- Yaffs2根文件系统制作
- 纯C语言写的编译器
- 基本语言细节--指针与引用
- java(19) - 反射机制
- 关于递归问题的一些小例子
- js中var声明和不加var的区别
- ios出内存管理知识点