jdbc操作数据库流程:
第一步:ClassForName();加载数据库连接驱动;
第二部:DriverManager.getConnection()获取数据库连接对象
第三步:根据sql获取sql回话对象,有两种方式 一种是Statement 另一种是PreparedStatement
第四步:执行sql处理结果集
为什么要使用PreparedStatement?或者 PreparedStatement和Statement的应用区别
第一步:ClassForName();加载数据库连接驱动;
第二部:DriverManager.getConnection()获取数据库连接对象
第三步:根据sql获取sql回话对象,有两种方式 一种是Statement 另一种是PreparedStatement
第四步:执行sql处理结果集
第五步:关闭结果集,关闭回话,关闭连接
package com.mybatis.excample.jdbc;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
/**
* 创建java_jdbc连接
*/
public class CreateJDBCConnection {
/**
* java程序都是通过 jdbc(java data base connectivity)连接数据库的,这样我们就可以通过编写slq来对数据库进行编程操作,实现实现业务数据操作
* jdbc是有sun公司提出的一系列规范,但是它只定义了接口规范,而具体的实现是由各大数据库厂商去实现的,每个数据库都有自己的特性特殊实现,jdbc就是一种典型的桥接模式
* jdbc主要功能
* (1) 建立数据库或者其他数据源的连接
* (2)向数据库发送slq语言
* (3)处理数据库的返回结果
* jdbc常用类和接口
* 建立数据库连接 Connection,建立操作指令statement, 执行查询的指令executeQuery, 获取查询结果 ResultSet等
*
* 驱动程序管理类
* DriverManager是jdbc的驱动管理类,作用于用户与驱动程序之间它跟踪当前可执行驱动程序,并在数据库和相应的驱动之间建立连接,DriverManager也可以处理 登录连接的时间限制
* 提供的常用方法有 DriverManger.getConnection().
*
* 声明类Statement
* Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,它们都作为在给定链接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。它们都专用于发送特定类型的SQL语句:
(1)Statement对象用于执行不带参数的简单的SQL语句;Statement接口提供了执行语句和获取结果的基本方法。
(2)PerparedStatement对象用于执行带或不带IN参数的预编译SQL语句;PeraredStatement接口添加处理IN参数的方法;
(3)CallableStatement对象用于执行对数据库已存储过程的调用;CallableStatement添加处理OUT参数的方法。
Statement提供了许多方法,最常用的方法如下:
(1)execute()方法:运行语句,返回是否有结果集。
(2)executeQuery()方法:运行查询语句,返回ReaultSet对象。
(3)executeUpdata()方法:运行更新操作,返回更新的行数。
(4)addBatch()方法:增加批处理语句。
(5)executeBatch()方法:执行批处理语句。
(6)clearBatch()方法:清除批处理语句。
*
*
*/
//传统jdbc连接
public Map getConnection(){
Connection connection=null;
String url="jdbc:mysql://127.0.0.1:3306/test";
String user="root";
String password="password";
Map map=new HashMap();
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//使用驱动管理器 创建 数据库连接
connection = DriverManager.getConnection(url, user, password);
//通过获取的数据库连接 对数据库进行予执行操作 Statement类或者 PrepareStatement() 两者是有区别的 下面会说到
//Statement statement = connection.createStatement();
String sql="SELECT * FROM TABLE_NAME WHEN 1=1 AND id IN (1,2,3,)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.getResultSet();
//获取结果集中的数据
while (resultSet.next()){
System.out.println(resultSet.next());
map.put(resultSet.getFetchSize(),resultSet.next());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return map;
}
}
为什么要使用PreparedStatement?或者 PreparedStatement和Statement的应用区别