JDBC编程
步骤
- 加载驱动
- 用户信息和URL
- 连接
- 执行sql的对象
- 执行sql
- 关闭连接
源代码
package com.cheng.lesson01;
import java.sql.*;
public class JdbcDemo01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、用户信息和URL
String url = "jdbc:mysql://localhost:3306/data?useUnicode=true&characterEncoding=utf8&useSSL=false";
String username = "root";
String password = "/*密码*/";
//3、连接成功,数据库对象, Connection代表对象
Connection connection = DriverManager.getConnection(url,username,password);
//4、执行SQL的对象 Statement
Statement statement = connection.createStatement();
//5、执行sql的对象去执行sql
String sql = "SELECT * FROM user";
ResultSet resultSet = statement.executeQuery(sql); //返回的结果集,封装了全部查询出的结果
while (resultSet.next()){
System.out.println("account=" + resultSet.getObject("u_account"));
System.out.println("password=" + resultSet.getObject("u_passwd"));
}
//6、释放连接
resultSet.close();
statement.close();
statement.close();
}
}
一些细节及对象解释
-
一个WARNING:Establishing SSL connection without server's identity verification is not recommended.
原因是在MySQL 5.5.45+、5.6.26+和5.7.6+等版本中,不建议在没有服务器身份验证的情况下建立SSL连接。
解决办法是禁用SSL,即useSSL=false
-
DriverManager
加载驱动时完整写法如下,但建议不写第一句
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
因为Driver类中已有注册驱动的静态代码块
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
Connection connection = DriverManager.getConnection(url,username,password);
//connection代表数据库
//事务回滚、提交、设置自动提交
connection.rollback();
connection.commit();
connection.setAutoCommit();
- URL
String url = "jdbc:mysql://localhost:3306/data?useUnicode=true&characterEncoding=utf8&useSSL=false";
//mysql默认端口号3306
//jdbc:mysql://主机地址:端口号/数据库名?参数1&参数2&参数3
//oracle默认端口号1521
//jdbc:oracle:thin:@localhost:1521:sid
- Statement执行sql的对象(PreparedStatement)
String sql = "SELECT * FROM user";//编写sql
statement.executeQuery();//查询操作 返回ResultSet
statement.execute();//执行任何SQL
statement.executeUpdate();//更新、插入、删除,返回受影响的行数
- ResultSet
获得指定的数据类型
ResultSet resultSet = statement.executeQuery(sql); //返回的结果集,封装了全部查询出的结果
resultSet.getObject();//在不知道列的类型的情况下使用
//如果知道列的类型就使用指定的类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
遍历、指针
resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个数据
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到指定行
- 释放资源
不释放比较占用内存……

浙公网安备 33010602011771号