JDBC实现数据库的连接
通过添加配置文件
如果我们想要需要更改数据库,按照之前的做法的话,我们就要取修改源代码,这样的方式很繁琐,可能也不一定去给你看源代码,既然这样我们应该怎么修改呢? 通过添加配置文件实现对数据库的访问,而不是去修改源代码,这样更改配置信息就可以完成对其他数据库的操作。
在src目录下建立配置文件如下图:
设置配置信息:
url = jdbc:mysql://localhost/studentinformation?serverTimezone=GMT%2B8
user = root
password = 81604152
driverclass = com.mysql.cj.jdbc.Driver
我们在JDBCutils中添加静态代码块,静态代码块 随着类加载时,加载进jvm中,读取配置文件在此添加如下代码:
static {
Properties p = new Properties();
InputStream is = JDBCtool.class.getClassLoader().getResourceAsStream("jdbc.pro");
try {
p.load(is);
url = p.getProperty("url");
password = p.getProperty("password");
user = p.getProperty("user");
DriverClass = p.getProperty("driverclass");
} catch (Exception e) {
}
}
获取连接
public static Connection getconn() {
Connection conn = null;
try {
Class.forName(DriverClass);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
JDBCutils工具:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCutils {
static String url = null;
static String password = null;
static String user = null;
static String DriverClass = null;
static {
Properties p = new Properties();
InputStream is = JDBCutils.class.getClassLoader().getResourceAsStream("jdbc.pro");
try {
p.load(is);
url = p.getProperty("url");
password = p.getProperty("password");
user = p.getProperty("user");
DriverClass = p.getProperty("driverclass");
} catch (Exception e) {
}
}
public static Connection getconn() {
Connection conn = null;
try {
Class.forName(DriverClass);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void ReleaseAll(Connection conn, ResultSet rs, Statement st) {
CloseConn(conn);
CloseRs(rs);
CloseSt(st);
}
private static void CloseConn(Connection conn) {
try {
if(conn != null) {
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally {
conn = null;
}
}
private static void CloseRs(ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally {
rs = null;
}
}
private static void CloseSt(Statement st) {
try {
if(st != null) {
st.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally {
st = null;
}
}
}
完整代码如下:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class prac {
public static void main(String [] args ) {
Connection conn = null;
ResultSet rs = null;
Statement st = null;
try {
conn = JDBCtutils.getconn();
st = conn.createStatement();
String sql= "select * from info";
rs = st.executeQuery(sql);
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString( "name");
System.out.println( id+":"+name);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCutils.ReleaseAll(conn, rs, st);
}
}
}