前言
增删改查是很多功能的基础,所以说把这个基础打好,你就能够实现更加复杂和强大的功能。
1.查询
1.1整体思路
查询是一个从数据库里面加载数据到内存的过程。
1.2流程
0.配置文件的创建
// mysql驱动类
driver=com.mysql.jdbc.Driver
//数据库路径
url=jdbc:mysql://127.0.0.1:3306/news?useUnicode=true&characterEncode=utf8
//数据库用户名
username=root
//数据库密码
password=root
1.首先要与数据库建立链接
这里你可以写一个连接数据库的工具类,要不然每次都要加载配置,读取配置文件,可以把这些流程封装到一个类中,以后每次使用直接调用就可以了。
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
*
*
* @ClassName:DbUtil
* @Description:数据库工具类
* @author zmh
* @date:2017年9月6日上午9:04:17
*
*/
public class DbUtil {
private static String driver;
private static String url;
private static String username;
private static String password;
/**
* 加载配置文件
*/
{
loadResource();
}
/**
* 读取配置文件
*/
public static void loadResource(){
InputStream in = DbUtil.class.getResourceAsStream("/db.properties");
Properties properties = new Properties();
try {
properties.load(in);
driver=properties.getProperty("driver");
url=properties.getProperty("url");
username=properties.getProperty("username");
password=properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
if(in!=null)in.close();
}catch(Exception e2){
e2.printStackTrace();
}
}
}
/**
* 数据库连接类
*/
public static Connection getConnection(){
Connection connection=null;
try {
Class.forName(driver);
connection=DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
每次连接数据库的时候调用就可以了:
DbUtil dbUtil=new DbUtil();
con=dbUtil.getConnection();
2.然后就是创建一个PreparedStatement对象,用于向数据库发送参数化SQL语句,并设置参数值。
PreparedStatement ps=null;
//sql语句书写一定要正确,为确保正确可以先在数据库中新建一个查询,测试正确后再写于这里
String sql="select title,description,content,typeId,publishTime,author,source from news where title=?;";
//这里有异常需要捕获
ps=con.prepareStatement(sql);
ps.setString(1, newsTitle);
3.在这个PreparedStatement对象中执行SQL查询,并返回由查询生成的ResultSet对象。
ResultSet rs=null;
rs=ps.executeQuery();
4.因为java是面向对象语言,查询的结果一般都是存于一个对象中
while(rs.next()){
news.setTitle(newsTitle);
news.setDescription(rs.getString("description"));
news.setContent(rs.getString("content"));
news.setTypeId(rs.getInt("typeId"));
news.setPublishTime(rs.getTimestamp("publishTime"));
news.setAuthor(rs.getString("author"));
news.setSource(rs.getString("source"));
}
5.最后别忘了关con,ps,rs这三个对象
/**
* 关的顺序和创建的顺序正好相反
*/
if(ps!=null&&!ps.isClosed())ps.close();
if(rs!=null&&!rs.isClosed())rs.close();
if(con!=null&&!con.isClosed())con.close();
2.增加和修改:二者的思路差不多
2.1整体思路
增加和修改都是内存中的数据存于数据库,一个持久化的过程
2.2流程
1.建立与数据库的连接
//在此就不再赘述,参考查询
2.然后就是创建一个PreparedStatement对象,用于向数据库发送参数化SQL语句,并设置参数值。
//在此就不再赘述,参考查询
//写一下增加和修改的SQL语句例子
//增加
String sql1="insert into news (title,description,typeId,publishTime,author,source,content) values(?,?,?,?,?,?,?);";
//修改
String sql2="update news set title=?, description=?, typeId=?, publishTime=?, author=?, source=?, content=? where title=?;";
3.在这个PreparedStatement对象中执行SQL增加和修改
//注意区别查询的执行方法
//rs=ps.executeQuery();
//因为增加和修改是数据存入数据库,所以没有查询结果,也就没有ResultSet对象rs
ps.executeUpdate();
4.因为增加和修改是数据存入数据库,所以没有查询结果
5.最后别忘了关con,ps,rs这三个对象
(不再赘述)
3.删除
3.1整体思路
删除是从数据库中删除指定的记录,根据某一条属性值
3.2流程
1.建立与数据库的连接
//在此就不再赘述,参考查询
2.然后就是创建一个PreparedStatement对象,用于向数据库发送参数化SQL语句,并设置参数值。
//在此就不再赘述,参考查询
//写一下增加和修改的SQL语句例子
String sql="DELETE FROM news WHERE title = ?;";
3.在这个PreparedStatement对象中执行SQL增加和修改
//注意区别查询的执行方法
//rs=ps.executeQuery();
//因为删除是数据存入数据库,所以没有查询结果,也就没有ResultSet对象rs
ps.executeUpdate();
4.因为删除是数据存入数据库,所以没有查询结果
5.最后别忘了关con,ps,rs这三个对象
(不再赘述)