我们用jdbc连接数据库分为这4步骤:
1.加载驱动
2.获取连接
3.获得执行器
4.关闭连接
那其实再一个项目下,我们前两部分都是相同的?
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection
("jdbc:mysql://master:3306/Test", "root", "123456");
一个是连接了mysql的驱动语句,一个是连接了指定数据库的语句
那么日后我们如果想要换一个数据库使用,一两处的话倒是好改,如果上百上千呢?
所以将这些内容存储到配置文件方便日后修改
我创建了一个名字叫做mysql.properties的配置文件,存储了上面的信息(k-v)格式
读取配置文件的用法:
//创建Propertes对象用于读取配置文件
Properties properties = new Properties();
//在当前类下读取我们的配置文件
InputStream ras = JDBCUtil.class.getClassLoader().getResourceAsStream("mysql.properties");
//将读取到的数据传入properties中
properties.load(ras);
//根据ley寻找value的值
String DRIVER = properties.getProperty("DRIVER");
String URL = properties.getProperty("URL");
String USERNAME = properties.getProperty("USERNAME");
String PASSWORD= properties.getProperty("PASSWORD");
最常用的?执行器也就是我们建立好连接以后使用的prepareStatement
connection.prepareStatement(sql)
这个执行器里面需要传入不同的sql语句
那么我们考虑将这个语句当作参数传入方法,在方法内创建好这个执行器再返回给调用者
public static PreparedStatement getps(String sql){
try {
ps = connection.prepareStatement(sql);
} catch (Exception e) {
e.printStackTrace();
}
return ps;
}
关闭连接的方法,就是先判断你的创建的连接是否为null,不为null就close()掉
综上写出的工具类JDBCUtil
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JDBCUtil {
//将可能用到的字段都提出来,方便下面的方法调用
private static String DRIVER;
private static String URL;
private static String USERNAME ;
private static String PASSWORD;
private static Connection connection=null;
private static PreparedStatement ps=null;
private static ResultSet rs=null;
static{
try {
//读取配置文件中的数据来加载驱动和创建连接
Properties properties = new Properties();
InputStream ras = JDBCUtil.class.getClassLoader().getResourceAsStream("mysql.properties");
properties.load(ras);
String DRIVER = properties.getProperty("DRIVER");
String URL = properties.getProperty("URL");
String USERNAME = properties.getProperty("USERNAME");
String PASSWORD= properties.getProperty("PASSWORD");
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getconnection(){
return connection;
}
//获取执行器
public static PreparedStatement getps(String sql){
try {
ps = connection.prepareStatement(sql);
} catch (Exception e) {
e.printStackTrace();
}
return ps;
}
//获取查询中的结果集
public static ResultSet getrs(){
try {
rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
//获取增删改中的结果
public static int update(){
int i=0;
try {
i=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return i;
}
//关闭上面建立的连接
public static void close(){
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
测试类:
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Utiltest {
public static void main(String[] args) throws Exception{
PreparedStatement ps=JDBCUtil.getps("Select * from student");
ResultSet rs = JDBCUtil.getrs();
while( rs.next()){
String string = rs.getString(1);
System.out.println(string);
}
JDBCUtil.close();
}
}
?查寻到了表中数据的第一列
?
|