首先,创建工具类肯定是对我们增删改查有所帮助的
比如:加载jdbc驱动,建立连接,关闭资源这些在我们增删改查的时候都需要重复写一样的代码,这样会使我们的代码看起来很冗余。
我们可以创建一个工具类把他们都放在一个类里面,每次需要的时候调用一下就可以了,没必要每次都重复的写代码,直接调用方便,简单……
代码如下:
//数据库连接与关闭工具类
public class DBUtil {
//连接URL字符串 有两种方式:
//private static String URL="jdbc:mysql://127.0.0.1:3306/epet";
private static String URL="jdbc:mysql:///epet";
//数据库用户名
private static String USER="root";
//用户密码
private static String PASSWORD="";
//获取数据库连接对象
public static Connection open(){
//数据库连接对象
Connection conn=null;
//获取连接并捕获异常
try{
//数据库驱动字符串
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL,USER,PASSWORD);
//判断是否成功连接 可用可不用
if (null!=conn){
System.out.println("成功!");
}else{
System.out.println("失败!");
}
}catch (Exception e){
e.printStackTrace(); //处理异常
}
return conn; //返回连接对象
}
//关闭数据库连接
public static void close(ResultSet rs, PreparedStatement pre,Connection conn) {
//若数据库连接对象不为空,否则关闭
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//若PrepareStatement对象不为空,否则关闭
if (pre != null) {
try {
pre.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//若结果集对象不为空,否则关闭
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
写好之后,我们在写增删改查的时候就可以直接调用了
前提:我们需要一张表,并且对这张表进行增删改查。
例如:我的表是一张用户信息表
//创建用户信息表
CREATE TABLE user_info(
id int not null auto_increment comment "编号",
user_name varchar(20) not null comment "用户名",
age int not null comment "年龄",
sex int(1) not null comment "性别",
primary key(id)
)comment="用户信息表",
CHARSET=utf8;
创建之后:
这张表是我进行了增删改查之后的数据
(1)表里面要是没有数据,我们可以向表添加数据
public void insert() throws Exception{
Connection conn = DBUtil.open();
String sql="insert into user_info(user_name,age,sex) values(?,?,?)";
PreparedStatement pre = conn.prepareStatement(sql);
pre.setString(1,"join");
pre.setInt(2,17);
pre.setInt(3,1);
pre.executeUpdate();
System.out.println("插入成功!");
DBUtil.close(null,pre,conn);
}
可以在表中多添加几条数据……
添加完后,我们就可以查询表中是否有添加过后的数据
(2)这时,就需要查询
public void select() throws Exception{
Connection conn = DBUtil.open();
String sql="select * from user_info";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
System.out.println("\t用户信息表");
System.out.println("编号\t用户名\t年龄\t\t性别");
while (rs.next()){
System.out.print(rs.getInt("id")+"\t");
System.out.print(rs.getString("user_name")+"\t");
System.out.print(rs.getInt("age")+"\t\t");
System.out.println(rs.getInt("sex"));
}
//关闭资源,从近的开始关闭
rs.close();
stat.close();
conn.close();
}
(3)接下来就是:修改
public void update() throws Exception{
Connection conn = DBUtil.open();
String sql="update user_info set user_name=?,age=?,sex=? where id=?";
PreparedStatement pre = conn.prepareStatement(sql);
pre.setString(1,"peter");
pre.setInt(2,12);
pre.setInt(3,0);
pre.setInt(4,4);
pre.executeUpdate();
System.out.println("更新成功!");
DBUtil.close(null,pre,conn);
}
(4)到了最简单的删除部分
public void delete() throws Exception{
Connection conn = DBUtil.open();
String sql="delete from user_info where id=?";
PreparedStatement pre = conn.prepareStatement(sql);
pre.setInt(1,2);
pre.executeUpdate();
System.out.println("删除成功!");
DBUtil.close(null,pre,conn);
}
发现:1.我的增删改查都是单独一个方法,并没有放在一起
2.连接已经关闭都是调用工具类里面的方法
3.我的增删改查很简单,大家也可以判断一下是否成功,我这直接省略了……
最后,我们还有一个main方法没有写
public static void main(String[]args) throws Exception{
new Demo().select();
}
不好之处:main方法中每写一个方法都要去调用哪个需要运行的方法,不能直接运行
方便之处:我们每写完一个方法之后需要运行,运行成功后,可以直接调用select()查询的方法,不需要去mysql数据库里面刷新。
我编写的增删改查很简单,希望能帮助到大家,我们一起加油!!!
不足的地方多多指点!