1、使用properties配置文件
开发中获得连接的4个参数(驱动,url ,用户名,密码)通常都存在配置文件,方便后期维护,程序如果需要更换数据,只需要修改配置文件即可。
通常情况下,我们习惯使用properties文件。此文件我们将做如下要求:
(1)、文件位置:任意,建议src下
(2)、文件名称:任意,扩展名为properties
(3)、文件内容:一行一组数据,格式是“key = vaue”
*key 命名自定义,如果是多个单词,习惯使用点隔开。例如jdbc.driver
*value 值不支持中文,如果需要使用非英文字符,将进行Unicode转换
2、创建配置文件
右键/New/File,输入“db.properties”文件名
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test
jdbc.user = root
jdbc.password = 123456
3、加载配置文件获取连接
我们将使用jdk提供的工具ResourceBundle加载properties文件,ResourceBundle提供getBundle()方法用于只提供properties文件即可,之后使用getString(key)通过key获得value的值。
JdbcUtils.java
public class JdbcUtils{
private static String driver; //驱动
private static String url; //路径
private static String username; //用户名
private static String password; //密码
/**
* 静态代码块加载配置文件信息,只需要加载一次
*/
static{
//1、使用jdk提供的工具类加载properties文件
ResourceBundle bundle = ResourceBundle.getBundle("db");
//2、通过key获得需要的值
driver = bundle.getString("jdbc.driver");
url = bundle.getString("jdbc.url");
username = bundle.getString("jdbc.user");
password = bundle.getString("jdbc.password");
}
/**
* 获取连接方法
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
try {
//1、注册驱动
Class.forName(driver);
//2、获取连接
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
throw new RuntimeException(e);
}
return conn;
}
}
4、实现
4.1模板
//模板
@Test
public void demo00() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//获取连接
conn = JdbcUtils.getConnection();
} catch (Exception e) {
} finally {
//释放资源
JdbcUtils.release(conn, st, rs);
}
}
4.2、添加:insert into
//添加
@Test
public void demo01() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1、获取连接
conn = JdbcUtils.getConnection();
//2、获得语句执行者
st = conn.createStatement();
//3、执行语句
int r = st.executeUpdate("insert into category(cid,cname) value ('c001''家电')");
//4、输出结果
System.out.println(r);
} catch (Exception e) {
} finally {
//释放资源
JdbcUtils.release(conn, st, rs);
}
}
4.3、更新:update ... set
//更新
@Test
public void demo02() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1、获取连接
conn = JdbcUtils.getConnection();
//2、获得语句执行者
st = conn.createStatement();
//3、执行语句
int r = st.executeUpdate("update category set cname = '服饰' where cid = 'c001'");
//4、输出结果
System.out.println(r);
} catch (Exception e) {
} finally {
//释放资源
JdbcUtils.release(conn, st, rs);
}
}
4.4、删除:delete
//删除
@Test
public void demo03() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1、获取连接
conn = JdbcUtils.getConnection();
//2、获得语句执行者
st = conn.createStatement();
//3、执行语句
int r = st.executeUpdate("delete from category where cid = 'c001'");
//4、输出结果
System.out.println(r);
} catch (Exception e) {
} finally {
//释放资源
JdbcUtils.release(conn, st, rs);
}
}
4.5、通过id查询
//通过id查询
@Test
public void demo04() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1、获取连接
conn = JdbcUtils.getConnection();
//2、获得语句执行者
st = conn.createStatement();
//3、执行语句
int r = st.executeUpdate("select * from category where cid = 'c002'");
//4、输出结果
if(rs.next()){
String cid = rs.getString("cid"); //通过列名获得值
String cname = rs.getString(2); //通过索引号获得值,从1开始
System.out.println(cid+":"+cname);
}else{
System.out.println("没有查询结果");
}
} catch (Exception e) {
} finally {
//释放资源
JdbcUtils.release(conn, st, rs);
}
}