什么是JDBC?
JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。
SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC这些规范的实现由具体的厂商去做~
对于开发人员来说,我们只需要掌握JDBC接口的操作即可!
一、导入数据库驱动
- 使用Maven导入MySql驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
二、第一个JDBC程序
import java.sql.*;
public class TestJDBC {
public static void main(String[] args) {
// 建立与数据库的Connection连接
// 这里需要提供:
// 数据库所处于的(本机)
// 数据库的端口号: 3306 (mysql专用端口号)
// 数据库名称 test
// 编码方式 UTF-8
// 账号 root
// 密码 123456
try {
//1、加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.用户信息和url
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String userName = "root";
String password = "123456";
//3、连接成功,数据库对象
Connection connection = DriverManager.getConnection(url,userName,password);
System.out.println("连接成功,获取连接对象: " + connection);
//4、执行SQL的对象Statement 执行sql的对象
Statement statement = connection.createStatement();
//5、执行sql的对象 去执行sql ,可能存在结果,查看返回结果
String sql = "select * from abc";
ResultSet resultSet = statement.executeQuery(sql);//查询用executeQuery增删改都用executeLargeUpdate
while (resultSet.next()){
System.out.println("id="+resultSet.getObject("id"));
System.out.println("name="+resultSet.getObject("name"));
System.out.println("age="+resultSet.getObject("age"));
}
//6、释放连接
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
三、JDBC对象解释
- DriverManager
// DriverManager.registerDriver(new com.mysq1.jdbc.Driver);
class.forName("com.mysql.jdbc.Driver");//固定写法,加载驱动
connection connection = briverManager. getconnection(ur1,username,password);
//connection代表数据库
//数据库设置自动提交
//事务提交
//事务滚回
connection.ro11back();
connection.commit(;
connection.setAutocommit(;
- URL
string ur1 = "jdbc :mysql://localhost: 3306 /jdbcstudy?
useunicode=true&characterEncoding=utf8&usessL=true";
/ / mysql -- 3306
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3
l / oralce -- 1521
l /ljdbc:oracle:thin:@localhost:1521:sid
- Statement 执行SQL对象
statement.executeQueryO;//查询操作返回Resu1tsetstatement.executeo; //执行任何SQL
statement.executeupdate();//更新、插入、删除。都是用这个,返回一个受影响的行数
- PrepareStatement执行SQL的对象(预编译)
推荐使用预编译,可以防止SQL注入的问题
import java.sql.*;
public class PrepareStatementTest {
public static void main(String[] args) {
try{
//1、加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.用户信息和url
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String userName = "root";
String password = "123456";
//3、连接成功,数据库对象
Connection connection = DriverManager.getConnection(url,userName,password);
System.out.println("连接成功,获取连接对象: " + connection);
//4、执行SQL的对象SPreparedStatement执行sql的对象
String sql = "select * from abc where id = ? ;"; //预编译SQL
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//5、手动赋值
preparedStatement.setString(1,"2");
//6、指向sql
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
System.out.println("id="+resultSet.getObject("id"));
System.out.println("name="+resultSet.getObject("name"));
System.out.println("age="+resultSet.getObject("age"));
}
//7、释放连接
resultSet.close();
preparedStatement.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- ResultSet查询结果集:封装了所有的查询结果
resultset.getobject(;//在不知道列类型的情况下使用//如果知道列的类型就使用指定的类型
resultset.getstring();
resu7tset.getInt();
resultset.getFloat();
resu7tset.getDate();
resultset.getobject();
遍历,指针
resultset.beforeFirst();//移动到最前面
resultset.afterLast();//移动到最后面
resultset.next();//移动到下一个数据
resultset.previous();//移动到前一行
resultset.absolute(row);//移动到指定行
- 释放资源
//6、释放连接
resultSet.close();
statement.close();
connection.close();//不关耗资源