时间:2021-07-01 10:21:17 帮助过:27人阅读
这些规范的具体实现由具体的厂商去做。
对于开发人员来说,只需要掌握JDBC接口的操作即可
? java.sql
? javax.sql
还需要导入一个数据库驱动包 mysql-connector-java-5.1.47.jar :
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.47
创建一个普通项目
创建测试数据库
CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci;
USE jdbcStudy;
CREATE TABLE users(
id INT PRIMARY KEY,
NAME VARCHAR(40),
PASSWORD VARCHAR(40),
email VARCHAR(60),
birthday DATE
);
INSERT INTO users(id,NAME,PASSWORD,email,birthday)
VALUES(1,‘zhangsan‘,‘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‘);
导入包 : mysql-connector-java-5.1.47.jar
编写测试代码
步骤总结:
1.加载驱动
2.连接数据库 DriverManager
3.获得执行sql的对象 Statement
4.获得返回的结果集
5.释放连接
public class jdbcTest01 {
public static void main(String[] args) throws Exception {
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver"); // 固定写方,加载驱动
// 2、用户信息和 url
// useUnicode=true 支持中文编码
// characterEncoding=utf8 设置中文集为utf8
// useSSL=true 设置安全的连接
String url="jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true"; //由于我的mysql版本较高,不能安全连接
String username="root";
String password="123456";
// 3、连接 数据库对象 Connection 代表数据库
Connection conn = DriverManager.getConnection(url,username,password);
// 4、执行SQL对象Statement 执行SQL的对象
Statement stmt = conn.createStatement();
//5、执行SQL的对象 去 执行SQL 可能存在的结果 查看返回结果
String sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql); // 返回结果集合
while (rs.next())
{
System.out.println("id="+rs.getObject("id"));
System.out.println("name="+rs.getObject("NAME"));
System.out.println("pwd="+rs.getObject("PASSWORD"));
System.out.println("email="+rs.getObject("email"));
System.out.println("birth="+rs.getObject("birthday"));
}
// 6、释放资源
rs.close();
stmt.close();
conn.close();
}
}
DriverManager
// DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver"); // 固定写方,加载驱动
Connection conn = DriverManager.getConnection(url,username,password);
// conn 代表数据库
// 数据库设置自动提交
// 事务提交
// 事务回滚
conn.rollback();
conn.commit();
conn.setAutoCommit();
URL
String url="jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
//MySQL 端口号:3306
//jdbc:mysql://主机地址:端口号/数据库名?参数1&参数2&参数3
//oralce 端口号:1521
// jdbc:oracle:thin:@主机地址:1521:sid
Statement 执行sql的对象
String sql = "SELECT *FROM users"; //编写SQL
Statement stmt = conn.createStatement();// 执行SQL对象Statement 执行SQL的对象
stmt.executeQuery(); //查询操作返回 ResultSet
stmt.execute(); // 执行任何SQL
stmt.executeUpdate(); // 更新、插入、删除 返回一个受影响的行数
ResultSet 查询的结果集 :封装了所有的查询结果
rs.getObject(); // 在不知道列类型的情况下使用
// 如果知道列的类型就使用指定的类型
rs.getString();
rs.getInt();
rs.getFloat();
rs.getDate();
......
rs.beforeFirst(); // 移动到最前面
rs.afterLast(); // 移动到最后面
rs.next(); // 移动到下一个数据
rs.previous(); // 移动到前一行
rs.absolute(row); // 移动到指定行
释放资源
rs.close();
stmt.close();
conn.close(); // 耗资源,用完关掉!
Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sqli语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。
Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。
Statement st = conn.createstatement();
String sq1 = "insert into user(.... ) values(.....) ";
int num = st.executeUpdate(sql);
if(num>0){
system.out.println("插入成功!! ! ");
}
CRUD操作-delete
使用executeUpdate(String sql) 方法完成数据删除操作,实例操作:
Statement st = conn.createstatement();
string sq1 = "delete from user where id=1";
int num = st.executeUpdate(sql);
if(num>0){
system.out.println("删除成功!! ! ");
}
CRUD操作-update
使用executeUpdate(String sql) 方法完成数据修改操作,实例操作:
Statement st = conn.createstatement();
string sq1 = "update user set name=‘‘ where name=‘‘";
int num = st.executeUpdate(sql);
if(num>0){
system.out.println("修改成功!! ! ");
}
CRUD操作-read
使用executeQuery(String sql) 方法完成数据修改操作,实例操作:
Statement st = conn.createstatement();
string sq1 = "select * from user where id=1";
ResultSet rs = st.executeQuery(sql);
while(rs.next(){
//根据获取列的数据类型,分别调用rs的响应方法映射到java对象中
}
创建资源文件 db.properties
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true
username = root
password = 123456
driver = com.mysql.jdbc.Driver
新建工具类,写有连接数据库使用的代码,方便其他类调用 jdbcUtils.java
public class jdbcUtils {
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
static {
try {
InputStream in = jdbcUtils.class.getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
//驱动只需要加载一次
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws Exception{
return DriverManager.getConnection(url,username,password);
}
//释放连接资源
public static void release(Connection conn, Statement st, ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
进行增删改测试
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = jdbcUtils.getConnection();
st = conn.createStatement(); //创建Statement对象
/* //新增
String sql = "INSERT INTO users (id,`NAME`,`PASSWORD`,`email`,`birthday`)" +
"VALUES(4,‘小李‘,‘123456‘,‘12344555@qq.com‘,‘2020-1-1‘)";*/
/*//删除
String sql = "delete from users where id = ‘4‘";*/
String sql = "update users set name = ‘saxon‘ where id = ‘1‘";
int i = st.executeUpdate(sql);
if(i>0){ //如果数据大于0
System.out.println("插入成功!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtils.release(conn,st,rs);
}
}
进行查询测试
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = jdbcUtils.getConnection();
st = conn.createStatement(); //创建Statement对象
String sql = "select * from users";
rs = st.executeQuery(sql);
while (rs.next()){
System.out.println("name="+rs.getString("NAME"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtils.release(conn,st,rs);
}
}
JDBC(重点)
标签:cst strong 响应 use out test res mvn 回滚