JDBC
去数据官网下载数据响应的驱动程序
java对每个数据库厂家提供相应接口,驱动程序就是对接口的实现类
导入驱动的jar包
Ecplise版放jar包
俩种方法
放在WEB-INF/lib下
- 通过build path导入
不同版本的数据库导入不同的jar包
连接时的写法也略有区别:
1.使用的jar包版本:mysql-connector-5.1.0+
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名称", "用户名", "密码");
2.使用的jar包版本:mysql-connector-8.0.0+
//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名称?useSSL=false&serverTimezone=服务器时区", "用户名", "密码");
/*
与5.0+版本的对比:驱动路径变了;多出了useSSL=false&serverTimezone=时区。
useSSL=false:8.0之前是需要连接数据库是需要建立ssl连接,而8.0之后不需要了,所以需要将其关闭。
serverTimezone可以填UTC、Asia/Shanghai等等,UTC要比中国时区早8个小时。我写的是serverTimezone=Hongkong
url=jdbc:mysql://127.0.0.1:3306/text1?useUnicode = true & serverTimezone = GMT%2B8 & characterEncoding = utf8 & useSSL = false
java链接数据库
分俩种:
-
statement (存在sql注入问题)
-
preparedStatement (预编译的)
java链接数据库6步
statement
-
第一步:注册驱动(作用:告诉java程序,即将连接的是那个品牌的数据库)
-
第二步:获取连接(表示jVM的进程和数据库进程之间的通道打开了,属于进程之间的通信,重量级,使用完后必须要关闭)
-
第三步:获取数据库操作对象(专门执行sql语句的对象)
-
第四步:执行SQL语句(DQL DML …)
-
第五步:处理查询结果集(只有第四步执行select语句 才有第五步处理查询结果集)
-
第六步:释放资源(使用完资源之后一定要关闭资源,java和数据库属于进程,开启后必须要关闭)
preparedStatement
六步没变只不过第三步是预编译
-
第一步获取驱动
-
第二步连接数据库
- 第三步获取预编译数据库操作对象 预编译sql语句
-
Sql 语句 传值 用?占位
-
对象.prepareStatement( sql )
-
然后对占位符进行传值
-
ps.setString(第一个问号的下标,传值); //Jdbc中 sql语句下标从1开始
-
- 第四步执行sql语句
-
这里就不用传入sql语句 , 直接预编译对象调用执行方法即可
-
用预编译的对象执行
-
-
第五百处理结果集
-
第六步关闭流释放资源
代码实现:
//代码实现
package com.jmi.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//操作数据 DML
public class JdbcDmlTest {
public static void main(String[] args) {
//注册驱动 Class.forName("路径")
//连接数据库 DriverManager.getConnection("jdbc:mysql//localhost:3306/数据库", "用户名", "密码")
//实例化数据库对象
//执行sql语句
//查询结果集int executeUptate(insert/delete/update) ResultSet executeQuery(select);
//关闭资源
Connection conn=null;//连接数据库的接口
// Statement st=null;//插入