JDBC
数据库驱动
驱动:声卡、显卡、数据库
我们的程序会通过数据库驱动和数据库打交道
JDBC
SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC
这些规范的实现由具体的厂商去做
对于开发人员来说只需要掌握JDBC的接口即可
java.sql
javax.sql
还需要导入一个数据库驱动包 mysql-connector-java-5.1.47.jar
JDBC程序
1、新建数据库表
CREATEDATABASE jdbcStudy CHARACTERSET utf8 COLLATE utf8_general_ci;
USE jdbcStudy;
CREATETABLE users(
id INTPRIMARYKEY,
NAME VARCHAR(40),
PASSWORDVARCHAR(40),
email VARCHAR(60),
birthday DATE
);
INSERTINTO users(id,NAME,PASSWORD,email,birthday)
VALUES(1,'zhansan','123456','zs@sina.com','1980-12-04'),
(2,'lisi','123456','lisi@sina.com','1981-12-04'),
(3,'wangwu','123456','wangwu@sina.com','1979-12-04');
2、创建一个java项目并导入数据库驱动
导入包后必须要添加至library才生效
3、编写测试代码
importjava.sql.*;
publicclassjdbcFirstDemo {
publicstaticvoidmain(String[] args) throwsClassNotFoundException, SQLException {
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver"); // 固定写法
// DriverManager.registerDriver(new com.mysql.jdbc.Driver()) 不推荐使用
// 2.用户信息和url
// useUnicode支持中文编码
// characterEncoding=utf8 设置字符集utf8
// useSSL = true 使用安全连接
Stringurl="jdbc:mysql:localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
Stringusername="root";
Stringpassword="123456";
// 3.连接成功 数据库对象Connection 代表数据库
Connectionconnection=DriverManager.getConnection(url, username, password);
// 4.执行sql对象 Statement执行sql对象
Statementstatement=connection.createStatement();
// 5.执行sql的对象去执行sql,可能存在结果,查看返回结果
Stringsql="select * from users";
ResultSetresultSet=statement.executeQuery(sql);
// 返回的结果集,结果集中封装了我们全部的查询出来的结果
while (resultSet.next()) {
System.out.println("id="+resultSet.getObject("id"));
System.out.println("name="+resultSet.getObject("NAME"));
System.out.println("pwd="+resultSet.getObject("PASSWORD"));
System.out.println("email="+resultSet.getObject("email"));
System.out.println("birth="+resultSet.getObject("birthday"));
}
// 6. 释放连接
resultSet.close();
statement.close();
connection.close();
}
}
步骤总结:
- 加载驱动
- 连接数据库 DriverManager
- 获得执行sql的对象Statement
- 获得返回的结果集
- 释放连接
DriverManager
Class.forName("com.mysql.jdbc.Driver"); // 固定写法
// DriverManager.registerDriver(new com.mysql.jdbc.Driver()) 不推荐使用
Connectionconnection=DriverManager.getConnection(url, username, password);
// connection 代表数据库
// 数据库设置自动提交 connection.setAutoCommit();
// 事务提交 connection.commit();
// 事务回滚 connection.rollback();
url
Stringurl="jdbc:mysql:localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
// mysql端口号默认3306
// 协议://主机地址:端口号/数据库名?参数1&参数2&参数3
// Oracle --1521
// jdbc:oracle:thin:@localhost:1521:sid
statement 执行sql对象 connection.prepareStatement()
Stringsql="select * from users";
statement.executeQuery(); // 查询操作返回 ResultSet
statement.execute(); // 执行任何sql
statement.executeUpdate(); // 更新、插入、删除都是用这个,返回一个受影响的行数
statement.executebatch(); // 执行多句
resultSet 查询的结果集:封装了所有的查询结果
获得指定的数据类型
resultSet.getObject(); // 在不知道的情况下使用
// 指定类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
...
遍历,指针
resultSet.beforeFirst(); // 移动到最前面
resultSet.afterLast(); // 移动到最后面
resultSet.next(); // 移动到下一个
resultSet.previous(); // 移动到前一行
resultSet.absolute(row); // 移动到指定行
释放资源
resultSet.close();
statement.close();
connection.close(); // 耗内存