前言

增删改查是很多功能的基础,所以说把这个基础打好,你就能够实现更加复杂和强大的功能。

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这三个对象
(不再赘述)