JDBC是什么
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,提供了统一的标准接口,程序可以通过JDBC API和不同关系数据库管理系统交互。

JDBC API包括以下常用的接口
| 接口名称 | 作用 |
|---|---|
| JDBC Driver | JDBC驱动 |
| java.sql.Connection | 连接 |
| java.sql.Statement | 静态处理块 |
| java.sql.PreparedStatement | 预处理 |
| java.sql.ResultSet | 结果集 |
| java.sql.ResultSetMetaData | 结果集元信息 |
JDBC驱动
JDBC驱动程序是一组Java类,它们实现JDBC接口以与特定数据库进行交互,由数据库供应商提供。例如MySql,Oracle,SQL Server都提供了JDBC驱动。想要使用,需要把对应的jar包导入项目即可。
连接
连接数据库,我们需要知道数据库的类型地址对应的端口号,以及用户名和密码。可以通过DriverManager类的静态方法,获取连接。
public static Connection getConnection(String url,String user, String password)
处理块
处理块分为两种:java.sql.Statement 静态处理块,java.sql.PreparedStatement预处理
预处理块通过?号的方式防止SQL注入,并且由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
静态处理块
String sql = "update stu_user set uname = '张三' where uuid = 123";
//获取处理块 (打包发送)
Statement state=conn.createStatement();
//执行完毕得到结果,接收结果集
ResultSet result=state.executeQuery(sql);
预处理块
从1开始
String sql = "update stu_user set uname = ? where uuid = ?";
state=conn.prepareStatement(sql);
//为?赋值
state.setString(1, "张三");
state.setObject(2, 123);
state.executeQuery()
例子
/*
* java连接数据库基本流程:
* 前提: 获取数据库厂商的包
* 1.加载驱动(选择哪一个数据库)
* 2.获取连接(与数据库连接上)
* 3.准备sql
* 4.获取处理块 (打包发送)
* 5.执行完毕得到结果,接收结果集
* 6.处理数据
* 7.关闭
*/
public class JDBCSimpleDemo01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动(选择哪一个数据库)
Oracle驱动
Class.forName("oracle.jdbc.OracleDriver");
MySql驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接(与数据库连接上)
Oracle连接方式
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");
mysql连接方式
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/project", "root", "123456");
//3.准备sql
String sql="select empno,ename from emp"; //注意:sql语句后面不要添加分号;
//4.获取处理块 (打包发送)
静态处理块
Statement state=conn.createStatement();
//5.执行完毕得到结果,接收结果集
ResultSet result=state.executeQuery(sql);
预处理块
PrepareStatementstate=conn.prepareStatement(sql);
ResultSet result = state.executeQuery()
//6.处理数据
while(result.next()){
int i=result.getInt(1);
String name=result.getString("ename");
System.out.println(i+"-->"+name);
}
//7.关闭
result.close();
state.close();
conn.close();
}
}

3199

被折叠的 条评论
为什么被折叠?



