public void demo() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1.加载驱动
// DriverManager.registerDriver(new Driver());// 会导致驱动注册两次。
Class.forName("com.mysql.jdbc.Driver");
// 2.获得连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "root");
// 3.创建执行SQL语句的对象,并且执行SQL
// 3.1创建执行sql的对象
String sql = "select * from user";
stmt = conn.createStatement();
// 3.2执行sql
rs = stmt.executeQuery(sql);
while (rs.next()) {
int uid = rs.getInt("uid");
String username = rs.getString("username");
String password = rs.getString("password");
String name = rs.getString("name");
System.out.println(uid + " " + username + " " + password + " " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 4.释放资源
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { // ignore
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;// 垃圾回收机制更早回收对象。
}
}
}
DriverManage :驱动管理类
主要作用:
一、注册驱动
实际开发中注册驱动会使用如下的方式:
Class.forName("com.mysql.jdbc.Driver");
用为之前的方式会导致驱动注册两次。
二、获得连接
Connection getConnection(String url,String username,String password);
url写法:jdbc:mysql://localhost:3306/jdbc
简写:jdbc:mysql:///jdbc
connection:连接对象
主要作用:
一、创建执行SQL语句的对象
- statement createStatement() :执行sql语句,有sql注入的风险
- PrepareStatement prepareStrtement(String sql):预编译SQL语句,解决SQL注入的漏洞
- CallableStatement prepareCall(String sql):执行SQL中存储过程
二、进行事务管理
- setAutoCommit(boolean autoCommit):设置事务是否自动提交
- commit:事务提交
- rollback():事务回滚
Statement:执行SQL
主要作用:
一、执行SQL语句
- boolean execute(String sql):执行SQL,执行select语句返回true,否则返回false
- ResultSet executeQuery(String sql):执行SQL中的select语句
- int executeUpadate(String sql):执行SQL中的insert/update/delete语句
二、执行批处理操作
- addBatch(String sql):添加到批处理
- executeBatch():执行批处理
- clearBatch():清空批处理
ResultSet:结果集
结果集:其实就是查询语句(select)语句查询的结果的封装
主要作用:
结果集获取查询到的结果的。
next():针对不同类型的数据可以使用getXXX()获取数据,通用的获取数据的方法:getObject();