package ab_connectMySQL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
public class JDBCdemo {
public static void main(String[] args){
//Q1-想想为什么先定义?
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1.加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取与数据库的链接
//端口号:3306 数据库名称:jsp_database
String url = "jdbc:mysql://localhost:3306/jsp_database?serverTimezone=UTC";//链接地址
String username = "root";//用户名
String password = "123456";//密码
conn = DriverManager.getConnection(url, username, password);
//3.获取用于向数据库发送sql语句的statement
st = conn.createStatement();
//4.向数据库发sql
String sql = "SELECT * FROM person";
rs = st.executeQuery(sql);
//5.对获取的结果result进行处理
while(rs.next()){
int id = rs.getInt("id");
String user = rs.getString("user");
String pwd = rs.getString("pwd");
System.out.println("id:"+id+" 姓名:"+ user +" 性别:"+pwd);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//6.关闭链接,释放资源
if(rs!=null){
try{
rs.close();
}catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(st!=null){
try{
st.close();
}catch (Exception e) {
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
而不是 Connnection conn = DriverManager.getConnection(url, username, password);如果声明和赋值同时进行,那么这个变量的作用域就会收到限制,其作用域在finally里面和try无法同时起作用,所以要声明域赋值要分开.