使用JDBC进行增删改查
前一天给大家分享了一些基本的JDBC知识,今天给大家做了一分最详尽的增删改查总结。Let’s go!
复习一下MySQL的语法
作用
关键字
举例
是否需要返回数据
添加(增)
INSERT
INSERT INTO customers(id)VALUES(9)
显示受到影响,不返回值
删除(删)
DELETE
DELETE FROM customers WHERE id=9
同上
修改(改)
UPDATE
update customers set name = ‘周星驰’ where id = 9
同上
查询(查)
SELECT
SELECT * FROM customers
有结果返回
对上述表进行分析,发现对表的添加、删除以及修改都是不需要返回值的,按照长期对于Java代码的理解,那么,我们就像代码中不需要返回值的一律为void方法,我们可以试着把它归为一类,而查询是需要由返回值的,我们就只能将其单独划分一类。
添加、删除以及修改
一、我们先来分析一下我们如果需要对一个数据库的表进行操作,需要那几步叭
- ①对数据库进行连接(昨天讲过了)
- ②写sql语句(因为这个肯定也是需要自己编写sql语句进行操作的)
- ③执行sql语句
- ④关闭资源
二、以添加为例子先看看
/**添加*/
/**因为涉及到关闭资源,这里就不采用throw来抛出异常,采用的是try……catch的形式*/
public void connection(){
PreparedStatement ps=null;
Connection conn =null;
//读取配置文件中的4个基本信息
try {
InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(inputStream);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//加载区间
Class.forName(driverClass);
//获取连接
conn = DriverManager.getConnection(url,user,password);
//4预编译sql语句,返回PreparedStatement的实例
String sql = "insert into customers(name,email,birth)values(?,?,?)";
ps = conn.prepareStatement(sql);
//填充占位符
ps.setString(1,"小阿七");
ps.setString(2,"xiaoaqi@gmail.com");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = sdf.parse("1996-09-08");
ps.setDate(3,new Date(date.getTime()));
//执行操作
//execute()执行sql语句,返回的是一个布尔值
ps.execute();
}catch (Exception e){
System.out.println(e.getMessage());
}finally {
//释放资源
try {
if(conn!=null && ps!=null) {
conn.close();
ps.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
结果展示
- 添加前的数据
- 添加后的数据
分析一下,上面的的代码,我们不管做哪一个操作,我们都需要的是连接,执行还有释放资源,仅仅只是语句和占位符不一样,这里我们完全可以把她的 代码单独用一个方法包装起来。下面我们试着取写一个通用的方法。
将代码升级到通用的情况
jdbc.properties文件
user=你的用户名
password=用户名对应的密码
url=连接数据库的地址
driverClass=com.mysql.jdbc.Driver
注:文件里面的配置文件尽量不要使用空格,否则会出现报错嫌疑!!!
user=root
password=123456
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
通用的工具类
看下面的代码想一想为什么本人会在设置连接时选择的是用throws关键字抛出异常,而在关闭资源时选择用try……catch来处理异常呢?
/**设置连接*/
public static Connection getConnection() throws Exception{
//读取配置文件中的4个基本信息
InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(inputStream);
String user = pros.getProperty("user");
String password = pros.getProperty("password");