JDBC(一)--慕课网笔记

JDBC详解 JDBC详解 JDBC详解 JDBC详解JDBC详解 JDBC详解JDBC详解 JDBC详解 立即下载
第1章 JDBC 简介
1-1 JDBC 简介
  1. JDBC简介
  2. 使用详解
    1. JDBC常用接口
    2. JDBC编程步骤
    3. 执行SQL语句
    4. 管理结果集
    5. 事务管理
  3. 高级应用
    1. 分页
    2. 高级查询
    3. 高级函数使用
  4. 整理总结

JDBC全称为Java Data Base Connectivity(java数据库连接)
可以为多种数据库提供统一的访问
体现Java “编写一次,处处运行”的高大上精神

第2章 JDBC 使用详解
2-1 JDBC 项目效果展示
2-2 JDBC实战—打通数据库

使用详情
1. 工欲善其事必先利其器
- 明确目的:需求(做什么)
- 实现屌丝逆袭
- 拥有女神禁区,享有查看,添加,修改,删除等功能
- 指导思想:概要设计(怎么做)
- 工具准备:MySql(数据库),Eclipse(开发工具)、Navicat(数据库管理工具)
- 埋头苦干:编码
- 实战演练:测试
-大功告成:系统上线
2. JDBC编程步骤
- 加载驱动程序:Class.forName(driverClass)
- 加载MySql驱动:Class.forName(“com.mysql.jdbc.Driver”)
- 加载Oracle驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”)
- 获取数据库连接:
DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/imooc”,”root”,”root”);
- 创建Statement对象:conn.createStatement();

public class DBUtil {

    private static final String URL = "jdbc:mysql://localhost:3306/imooc";
    private static final String USER = "root";
    private static final String PASSWORD = "root";

    public static void main(String[] args) throws Exception {

        //1.加载驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取数据库连接
        Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);       
        //3.通过数据库连接操作数据库,实现增删改查
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");

        while(rs.next()) {
            System.out.println(rs.getString("user_name") + "," + rs.getInt("age"));
        }


    }

}
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for imooc_goddess
-- ----------------------------
DROP TABLE IF EXISTS `imooc_goddess`;
CREATE TABLE `imooc_goddess` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(30) NOT NULL,
  `sex` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `mobile` varchar(11) DEFAULT NULL,
  `create_user` varchar(30) DEFAULT NULL,
  `create_date` date DEFAULT NULL,
  `update_user` varchar(30) DEFAULT NULL,
  `update_date` date DEFAULT NULL,
  `isdel` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of imooc_goddess
-- ----------------------------
INSERT INTO `imooc_goddess` VALUES ('1', '小溪', '1', '22', '2000-12-12', 'xiaoxi@163.com', '13911111111', 'ADMIN', '2015-01-08', 'ADMIN', '2015-01-08', '0');
2-3 JDBC实战—搭建模型层 Ⅰ
  1. 详设
    • 采用MVC三层结构
    • View(视图层)
    • Control(控制层)
    • Model(模型层)
    • DB(数据库)
Created with Raphaël 2.1.0 View View Controller Controller Model Model 用户行为 更新Model 通知 更新View Model->数据 View->显示 Controller->协调控制

设计从上往下或从下往上,建议从下往上

public class Goddess {

    private Integer id;
    private String user_name;
    private Integer sex;
    private Integer age;
    private Date birthday;
    private String email;
    private String mobile;
    private String create_user;
    private String update_user;
    private Date create_date;
    private Date update_date;
    private Integer isdel;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getCreate_user() {
        return create_user;
    }

    public void setCreate_user(String create_user) {
        this.create_user = create_user;
    }

    public String getUpdate_user() {
        return update_user;
    }

    public void setUpdate_user(String update_user) {
        this.update_user = update_user;
    }

    public Date getCreate_date() {
        return create_date;
    }

    public void setCreate_date(Date create_date) {
        this.create_date = create_date;
    }

    public Date getUpdate_date() {
        return update_date;
    }

    public void setUpdate_date(Date update_date) {
        this.update_date = update_date;
    }

    public Integer getIsdel() {
        return isdel;
    }

    public void setIsdel(Integer isdel) {
        this.isdel = isdel;
    }

    @Override
    public String toString() {
        return "Goddess [id=" + id + ", user_name=" + user_name + ", sex="
                + sex + ", age=" + age + ", birthday=" + birthday + ", email="
                + email + ", mobile=" + mobile + ", create_user=" + create_user
                + ", update_user=" + update_user + ", create_date="
                + create_date + ", update_date=" + update_date + ", isdel="
                + isdel + "]";
    }
}
public class GoddessDao1 {


    public void addGoddess() {

    }

    public void updateGoddess() {

    }

    public void delGoddess() {

    }

    public List<Goddess> query() throws SQLException{
        Connection conn = DBUtil1.getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");

        List<Goddess> gs = new ArrayList<Goddess>();
        Goddess g = null;
        while(rs.next()) {
             g = new Goddess();
             g.setUser_name(rs.getString("user_name"));
             g.setAge(rs.getInt("age"));

             gs.add(g);
        }

        return gs;
    }

    public Goddess get() {
        return null;
    }


}
public class GoddessAction1 {

    public static void main(String[] args) throws SQLException {

        GoddessDao1 g = new GoddessDao1();

        List<Goddess> gs = g.query();

        for (Goddess goddess : gs) {
            System.out.println(goddess.getUser_name() + "," + goddess.getAge());
        }


    }

}
public class DBUtil1 {

    private static final String URL = "jdbc:mysql://localhost:3306/imooc";
    private static final String USER = "root";
    private static final String PASSWORD = "root";


    private static Connection conn = null;

    static {
        try {
            //1.加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取数据库连接
            conn = DriverManager.getConnection(URL,USER,PASSWORD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }   
    }


    public static Connection getConnection() {
        return conn;
    }

    public static void main(String[] args) throws Exception {

        //1.加载驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取数据库连接
        Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);       
        //3.通过数据库连接操作数据库,实现增删改查
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");

        while(rs.next()) {
            System.out.println(rs.getString("user_name") + "," + rs.getInt("age"));
        }


    }

}
2-4 JDBC实战—搭建模型层 Ⅱ
public class GoddessAction1 {

    public static void main(String[] args) throws Exception {

        GoddessDao1 g = new GoddessDao1();

        Goddess g1 = new Goddess();
        g1.setUser_name("小夏");
        g1.setAge(22);
        g1.setSex(1);
        g1.setBirthday(new Date());
        g1.setEmail("xiao@126.com");
        g1.setMobile("15312345678");
        g1.setCreate_user("ADMIN");
        g1.setUpdate_user("ADMIN");
        g1.setIsdel(1);
        g.addGoddess(g1);
    }

}
public class GoddessDao1 {


    public void addGoddess(Goddess g) throws SQLException {
        Connection conn = DBUtil1.getConnection();
        String sql="" +
                "insert into imooc_goddess" +
                "(user_name,sex,age,birthday,email,mobile," +
                "create_user,create_date,update_user,update_date,isdel)" +
                "values(" +
                "?,?,?,?,?,?,?,current_date(),?,current_date(),?)";

        PreparedStatement ptmt = conn.prepareStatement(sql);
        ptmt.setString(1, g.getUser_name());
        ptmt.setInt(2, g.getSex());
        ptmt.setInt(3, g.getAge());
        ptmt.setDate(4,  new Date(g.getBirthday().getTime()));
        ptmt.setString(5, g.getEmail());
        ptmt.setString(6, g.getMobile());
        ptmt.setString(7, g.getCreate_user());
        ptmt.setString(8, g.getUpdate_user());
        ptmt.setInt(9, g.getIsdel());
        ptmt.execute();

    }

    public void updateGoddess() {

    }

    public void delGoddess() {

    }

    public List<Goddess> query() throws SQLException{
        Connection conn = DBUtil1.getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");

        List<Goddess> gs = new ArrayList<Goddess>();
        Goddess g = null;
        while(rs.next()) {
             g = new Goddess();
             g.setUser_name(rs.getString("user_name"));
             g.setAge(rs.getInt("age"));

             gs.add(g);
        }

        return gs;
    }

    public Goddess get() {
        return null;
    }


}
2-5 JDBC实战—搭建模型层 Ⅲ
public class GoddessAction1 {

    public static void main(String[] args) throws Exception {

        GoddessDao1 g = new GoddessDao1();

        Goddess g1 = new Goddess();
        g1.setUser_name("小夏");
        g1.setAge(24);
        g1.setSex(1);
        g1.setBirthday(new Date());
        g1.setEmail("xiao@126.com");
        g1.setMobile("15312345678");
        g1.setUpdate_user("ADMIN");
        g1.setIsdel(1);
        g1.setId(6);
//      g.addGoddess(g1);

//      g.updateGoddess(g1);

//      g.delGoddess(6);

        Goddess g2 = g.get(7);
        System.out.println(g2.toString());


    }

}
public class GoddessDao1 {


    public void addGoddess(Goddess g) throws SQLException {
        Connection conn = DBUtil1.getConnection();
        String sql="" +
                "insert into imooc_goddess" +
                "(user_name,sex,age,birthday,email,mobile," +
                "create_user,create_date,update_user,update_date,isdel)" +
                "values(" +
                "?,?,?,?,?,?,?,current_date(),?,current_date(),?)";

        PreparedStatement ptmt = conn.prepareStatement(sql);
        ptmt.setString(1, g.getUser_name());
        ptmt.setInt(2, g.getSex());
        ptmt.setInt(3, g.getAge());
        ptmt.setDate(4,  new Date(g.getBirthday().getTime()));
        ptmt.setString(5, g.getEmail());
        ptmt.setString(6, g.getMobile());
        ptmt.setString(7, g.getCreate_user());
        ptmt.setString(8, g.getUpdate_user());
        ptmt.setInt(9, g.getIsdel());
        ptmt.execute();

    }

    public void updateGoddess(Goddess g) throws SQLException {
        Connection conn = DBUtil1.getConnection();
        String sql="" +
                " update imooc_goddess " +
                " set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?, " +
                " update_user=?,update_date=current_date(),isdel=? " +
                " where id=? ";
        PreparedStatement ptmt=conn.prepareStatement(sql);

        ptmt.setString(1, g.getUser_name());
        ptmt.setInt(2, g.getSex());
        ptmt.setInt(3, g.getAge());
        ptmt.setDate(4, new Date(g.getBirthday().getTime()));
        ptmt.setString(5, g.getEmail());
        ptmt.setString(6, g.getMobile());
        ptmt.setString(7, g.getUpdate_user());
        ptmt.setInt(8, g.getIsdel());
        ptmt.setInt(9, g.getId());
        ptmt.execute();
    }

    public void delGoddess(Integer id) throws SQLException {
        Connection conn = DBUtil1.getConnection();
        String sql="" +
                " delete from imooc_goddess " +
                " where id=? ";
        PreparedStatement ptmt=conn.prepareStatement(sql);

        ptmt.setInt(1, id);
        ptmt.execute();
    }

    public List<Goddess> query() throws SQLException{
        Connection conn = DBUtil1.getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");

        List<Goddess> gs = new ArrayList<Goddess>();
        Goddess g = null;
        while(rs.next()) {
             g = new Goddess();
             g.setUser_name(rs.getString("user_name"));
             g.setAge(rs.getInt("age"));

             gs.add(g);
        }

        return gs;
    }

    public Goddess get() {
        return null;
    }


}
2-6 JDBC实战—搭建模型层 Ⅳ

    public static void main(String[] args) throws Exception {

        GoddessDao g = new GoddessDao();

        List<Map<String,Object>> params = new ArrayList<Map<String,Object>>();

        Map<String,Object> param = new HashMap<String,Object>();
        param.put("name", "user_name");
        param.put("rela", "like");
        param.put("value", "'%小美%'");
        param = new HashMap<String,Object>();
        param.put("name", "mobile");
        param.put("rela", "=");
        param.put("value", "15312345678");

        params.add(param);

        List<Goddess> result = g.query(params);
        for (int i = 0; i < result.size(); i++) {
            System.out.println(result.get(i).toString());
        }

    }

}
public class GoddessDao {

    public void addGoddess(Goddess g) throws Exception{
        Connection conn=DBUtil.getConnection();
        String sql="" +
                "insert into imooc_goddess" +
                "(user_name,sex,age,birthday,email,mobile," +
                "create_user,create_date,update_user,update_date,isdel)" +
                "values(" +
                "?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
        PreparedStatement ptmt=conn.prepareStatement(sql);

        ptmt.setString(1, g.getUser_name());
        ptmt.setInt(2, g.getSex());
        ptmt.setInt(3, g.getAge());
        ptmt.setDate(4, new Date(g.getBirthday().getTime()));
        ptmt.setString(5, g.getEmail());
        ptmt.setString(6, g.getMobile());
        ptmt.setString(7, g.getCreate_user());
        ptmt.setString(8, g.getUpdate_user());
        ptmt.setInt(9, g.getIsdel());
        ptmt.execute();
    }

    public void updateGoddess(Goddess g) throws SQLException{
        Connection conn=DBUtil.getConnection();
        String sql="" +
                " update imooc_goddess " +
                " set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?, " +
                " update_user=?,update_date=current_date(),isdel=? " +
                " where id=? ";
        PreparedStatement ptmt=conn.prepareStatement(sql);

        ptmt.setString(1, g.getUser_name());
        ptmt.setInt(2, g.getSex());
        ptmt.setInt(3, g.getAge());
        ptmt.setDate(4, new Date(g.getBirthday().getTime()));
        ptmt.setString(5, g.getEmail());
        ptmt.setString(6, g.getMobile());
        ptmt.setString(7, g.getUpdate_user());
        ptmt.setInt(8, g.getIsdel());
        ptmt.setInt(9, g.getId());
        ptmt.execute();
    }

    public void delGoddess(Integer id) throws SQLException{
        Connection conn=DBUtil.getConnection();
        String sql="" +
                " delete from imooc_goddess " +
                " where id=? ";
        PreparedStatement ptmt=conn.prepareStatement(sql);

        ptmt.setInt(1, id);
        ptmt.execute();
    }
    public List<Goddess> query() throws Exception{
        List<Goddess> result=new ArrayList<Goddess>();

        Connection conn=DBUtil.getConnection();
        StringBuilder sb=new StringBuilder();
        sb.append("select id,user_name,age from imooc_goddess  ");

        PreparedStatement ptmt=conn.prepareStatement(sb.toString());

        ResultSet rs=ptmt.executeQuery();

        Goddess g=null;
        while(rs.next()){
            g=new Goddess();
            g.setId(rs.getInt("id"));
            g.setUser_name(rs.getString("user_name"));
            g.setAge(rs.getInt("age"));
            result.add(g);
        }
        return result;
    }
    public List<Goddess> query(String name,String mobile,String email) throws Exception{
        List<Goddess> result=new ArrayList<Goddess>();

        Connection conn=DBUtil.getConnection();
        StringBuilder sb=new StringBuilder();
        sb.append("select * from imooc_goddess  ");

        sb.append(" where user_name like ? and mobile like ? and email like ?");

        PreparedStatement ptmt=conn.prepareStatement(sb.toString());
        ptmt.setString(1, "%"+name+"%");
        ptmt.setString(2, "%"+mobile+"%");
        ptmt.setString(3, "%"+email+"%");
        System.out.println(sb.toString());
        ResultSet rs=ptmt.executeQuery();

        Goddess g=null;
        while(rs.next()){
            g=new Goddess();
            g.setId(rs.getInt("id"));
            g.setUser_name(rs.getString("user_name"));
            g.setAge(rs.getInt("age"));
            g.setSex(rs.getInt("sex"));
            g.setBirthday(rs.getDate("birthday"));
            g.setEmail(rs.getString("email"));
            g.setMobile(rs.getString("mobile"));
            g.setCreate_date(rs.getDate("create_date"));
            g.setCreate_user(rs.getString("create_user"));
            g.setUpdate_date(rs.getDate("update_date"));
            g.setUpdate_user(rs.getString("update_user"));
            g.setIsdel(rs.getInt("isdel"));

            result.add(g);
        }
        return result;
    }
    public List<Goddess> query(List<Map<String, Object>> params) throws Exception{
        List<Goddess> result=new ArrayList<Goddess>();

        Connection conn=DBUtil.getConnection();
        StringBuilder sb=new StringBuilder();
        sb.append("select * from imooc_goddess where 1=1 ");

        if(params!=null&&params.size()>0){
            for (int i = 0; i < params.size(); i++) {
                Map<String, Object> map=params.get(i);
                sb.append(" and  "+map.get("name")+" "+map.get("rela")+" "+map.get("value")+" ");
            }
        }

        PreparedStatement ptmt=conn.prepareStatement(sb.toString());

        System.out.println(sb.toString());
        ResultSet rs=ptmt.executeQuery();

        Goddess g=null;
        while(rs.next()){
            g=new Goddess();
            g.setId(rs.getInt("id"));
            g.setUser_name(rs.getString("user_name"));
            g.setAge(rs.getInt("age"));
            g.setSex(rs.getInt("sex"));
            g.setBirthday(rs.getDate("birthday"));
            g.setEmail(rs.getString("email"));
            g.setMobile(rs.getString("mobile"));
            g.setCreate_date(rs.getDate("create_date"));
            g.setCreate_user(rs.getString("create_user"));
            g.setUpdate_date(rs.getDate("update_date"));
            g.setUpdate_user(rs.getString("update_user"));
            g.setIsdel(rs.getInt("isdel"));

            result.add(g);
        }
        return result;
    }
    public Goddess get(Integer id) throws SQLException{
        Goddess g=null;
        Connection conn=DBUtil.getConnection();
        String sql="" +
                " select * from imooc_goddess " +
                " where id=? ";
        PreparedStatement ptmt=conn.prepareStatement(sql);

        ptmt.setInt(1, id);
        ResultSet rs=ptmt.executeQuery();
        while(rs.next()){
            g=new Goddess();
            g.setId(rs.getInt("id"));
            g.setUser_name(rs.getString("user_name"));
            g.setAge(rs.getInt("age"));
            g.setSex(rs.getInt("sex"));
            g.setBirthday(rs.getDate("birthday"));
            g.setEmail(rs.getString("email"));
            g.setMobile(rs.getString("mobile"));
            g.setCreate_date(rs.getDate("create_date"));
            g.setCreate_user(rs.getString("create_user"));
            g.setUpdate_date(rs.getDate("update_date"));
            g.setUpdate_user(rs.getString("update_user"));
            g.setIsdel(rs.getInt("isdel"));
        }
        return g;
    }
}
public class DBUtil {

    private static final String URL = "jdbc:mysql://localhost:3306/imooc?useUnicode=true&characterEncoding=utf8";
    private static final String USER="root";
    private static final String PASSWORD="root";

    private static Connection conn=null;

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        return conn;
    }

}
2-7 JDBC实战—搭建控制层
public class TestAction {

    public static void main(String[] args) throws Exception {
        GoddessAction action=new GoddessAction();
        /*查询*/
        /**/
        Goddess g=new Goddess();

        g.setUser_name("小青");
        g.setSex(1);
        g.setAge(25);
        g.setBirthday(new Date());
        g.setEmail("xiaoqing@163.com");
        g.setMobile("15688888888");
        g.setIsdel(0);
        g.setId(7);
//      action.add(g);

//      action.edit(g);

//      action.del(7);

        List<Map<String, Object>> params=new ArrayList<Map<String,Object>>();

        Map<String, Object> map=new HashMap<String, Object>();

        map.put("name", "user_name");
        map.put("rela", "=");
        map.put("value", "'小美'");

        params.add(map);

        List<Goddess> result=action.query(params);

        for (int i = 0; i < result.size(); i++) {
            System.out.println(result.get(i).getId()+
                    ":"+result.get(i).getUser_name());
        }
    }
}
public class GoddessAction {

    public void add(Goddess goddess) throws Exception{
        GoddessDao dao=new GoddessDao();
        goddess.setSex(1);
        goddess.setCreate_user("ADMIN");
        goddess.setUpdate_user("ADMIN");
        goddess.setIsdel(0);
        dao.addGoddess(goddess);
    }

    public Goddess get(Integer id) throws SQLException{
        GoddessDao dao=new GoddessDao();
        return dao.get(id);
    }

    public void edit(Goddess goddess) throws Exception{
        GoddessDao dao=new GoddessDao();
        dao.updateGoddess(goddess);
    }
    public void del(Integer id) throws SQLException{
        GoddessDao dao=new GoddessDao();
        dao.delGoddess(id);
    }

    public List<Goddess>  query() throws Exception{
        GoddessDao dao=new GoddessDao();
        return dao.query();
    }
    public List<Goddess> query(List<Map<String, Object>> params) throws Exception{
        GoddessDao dao=new GoddessDao();
        return dao.query(params);
    }
}
2-8 JDBC实战—搭建视图层(上)

试图层
- 流程:
- 程序启动后,一直保持在运行状态
- 循环接收控制台的输入参数
- 调用Action(控制层)响应,并将返回结果展示在控制台中
- 直到输入特定的输入标记(如EXIT)后,程序退出
- 问题点:
- 循环接收参数
- 某个功能的保持

2-9 JDBC实战—搭建视图层(下)
public class View {

    private static final String CONTEXT="欢迎来到女神禁区:\n" +
            "下面是女神禁区的功能列表:\n" +
            "[MAIN/M]:主菜单\n" +
            "[QUERY/Q]:查看全部女神的信息\n" +
            "[GET/G]:查看某位女神的详细信息\n" +
            "[ADD/A]:添加女神信息\n" +
            "[UPDATE/U]:更新女神信息\n" +
            "[DELETE/D]:删除女神信息\n" +
            "[SEARCH/S]:查询女神信息(根据姓名、手机号来查询)\n" +
            "[EXIT/E]:退出女神禁区\n" +
            "[BREAK/B]:退出当前功能,返回主菜单";

    private static final String OPERATION_MAIN="MAIN";
    private static final String OPERATION_QUERY="QUERY";
    private static final String OPERATION_GET="GET";
    private static final String OPERATION_ADD="ADD";
    private static final String OPERATION_UPDATE="UPDATE";
    private static final String OPERATION_DELETE="DELETE";
    private static final String OPERATION_SEARCH="SEARCH";
    private static final String OPERATION_EXIT="EXIT";
    private static final String OPERATION_BREAK="BREAK";

    public static void main(String[] args) {

        System.out.println(CONTEXT);
        //怎么保持程序一直运行

        Scanner scan=new Scanner(System.in);
        Goddess goddess=new Goddess();
        GoddessAction action=new GoddessAction();
        String prenious=null;
        Integer step=1;
        while(scan.hasNext()){
            String in=scan.next().toString();
            if(OPERATION_EXIT.equals(in.toUpperCase())
                    ||OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())){
                System.out.println("您已成功退出女神禁区。");
                break;
            }else if(OPERATION_QUERY.equals(in.toUpperCase())
                    ||OPERATION_QUERY.substring(0, 1).equals(in.toUpperCase())){
                try {
                    List<Goddess> list=action.query();
                    for (Goddess go : list) {
                        System.out.println(go.getId()+",姓名:"+go.getUser_name());
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }else if(OPERATION_ADD.equals(in.toUpperCase())
                    ||OPERATION_ADD.substring(0, 1).equals(in.toUpperCase())
                    ||OPERATION_ADD.equals(prenious)){
                prenious=OPERATION_ADD;
                //新增女神

                if(1==step){
                    System.out.println("请输入女神的[姓名]");
                }else if(2==step){
                    goddess.setUser_name(in);
                    System.out.println("请输入女神的[年龄]");
                }else if(3==step){
                    goddess.setAge(Integer.valueOf(in));
                    System.out.println("请输入女神的[生日],格式如:yyyy-MM-dd");
                }else if(4==step){
                    SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
                    Date birthday=null;
                    try {
                        birthday = sf.parse(in);
                        goddess.setBirthday(birthday);
                        System.out.println("请输入女神的[邮箱]");
                    } catch (ParseException e) {
                        e.printStackTrace();
                        System.out.println("您输入的格式有误,请重新输入");
                        step=3;
                    }
                }else if(5==step){
                    goddess.setEmail(in);
                    System.out.println("请输入女神的[手机号]");
                }else if(6==step){
                    goddess.setMobile(in);

                    try {
                        action.add(goddess);
                        System.out.println("新增女神成功");
                    } catch (Exception e) {
                        e.printStackTrace();
                        System.out.println("新增女神失败");
                    }
                }
                if(OPERATION_ADD.equals(prenious)){
                    step++;                 
                }
            }else{
                System.out.println("您输入的值为:"+in);               
            }

        }
    }
}
第3章 整理总结
3-1 课程总结

JDBC的基本概念
连接数据库的桥梁
由java语言编写的类和接口组成
可以为多种数据库提供统一的访问

JDBC各种连接方式的对比
1. JDBC+ODBC桥的方式
特点:需要数据库ODBC驱动,仅适用于微软的系统
2. JDBC+厂商API的形式
特点:厂商API一般使用C编写
3. JDBC+厂商Database Connection Server+DataBase的形式
特点:在JAVA与DATABASE之间架起了一台专门用于数据库连接的服务器(一般有数据库厂商提供)
4. JDBC+DATABASE的连接方式
*特点:这使得Application与数据库分开
开发者只需要关心内部逻辑的实现而不需注重数据库连接的具体实现*


《JDBC之 “ 对岸的女孩看过来“》视频地址

JDBC连接数据库,包含DBCP、C3P0连接池,慕课网JDBC之对面的女孩走过来项目的源码 Java JDBC基本内容,带增删改查例子,支持MySql数据库,支持事务,返回数据格式 支持list集合格式,以及封装对象。有利于初学者理解数据库和Java的连接,还有连接池的两个小demo,也是慕课网上 JDBC之对面的女孩走过来这个项目的源码,实测可用,和课程上的效果一样。 立即下载

相关推荐

JDBC视频学习笔记

内容详尽,一共26页。适合初学者使用,可脱离视频学习。

JDBC概述详解

本文全面的介绍了JDBC的相关知识,包括其基础与高级应用、Service层的事务管理、ThreadLocal(本地线程变量)、 数据库连接池、Commons Dbutils的原理及其使用!

一个很懒的人 3564

5G-A无源物联网:深度解析“不插电“智能的底层技术原理

北京移动推出5G-A无源物联网技术,实现电动车标签"零功耗"运行。该技术通过射频能量收集(利用5G-A基站高功率信号转换为电能)和反向散射通信(调制反射信号传输数据)两大核心技术,使设备无需电池即可工作。5G-A相比4G在信号能量密度、通信速率和定位精度等方面显著提升,结合通感一体等创新技术,为无源物联网提供商用基础。该方案已在北京小区试点应用,实现电动车精准定位管理,标签寿命可达5年以上。专家预测,这项技术将大幅降低物联网部署成本,推动"万物智联"时代的到来。

通信行业老兵、物联网从业者,做一个有趣的普通人。 2014

JDBC基础(超详细)

JDBC概述     在软件开发过程中,经常要使用数据库来存储和管理数据。为了在Java语言中提供对数据库访问的支持,SUN公司于1996年提供了一套访问数据库的标准Java类库,即JDBC。 是什么JDBC?     JDBC的全称是:Java数据库连接(Java DataBase Connectivity),它是一套用于执行SQL语句的Java API。应用程序可以通过这套API联系到关系型数据库,并使用SQL语句来完成对

muyuxifeng的博客 3509

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

三菱CNC数据采集实战:从环境搭建到代码实现的完整指南

本文提供了一份完整的三菱CNC数据采集实战指南,涵盖从开发环境搭建、核心SDK获取、网络配置到基于C#和A2协议的完整代码实现。文章详细解析了初始化、连接管理、数据获取与展示四大核心模块,并分享了错误处理、性能优化及与MES系统集成的关键技巧,帮助工程师快速构建稳定可靠的工业数据采集系统。

wood5的博客 890

JDBC详解

JDBC(Java database connectivity)Java连接数据库技术,是Sun公司提供了一套API(Application Programming Interface应用程序编程接口),它为Java应用程序提供了一系列的类,使其能够快速高效地访问数据库。JDBC快速入门,JDBC常用API介绍,数据库连接池

这河里吗l的博客 5153

CAN-do-paser:Java开发的CAN总线数据帧解析库

CAN总线数据帧使用DBC文件信息解析为物理量,基于Java开发的数据解析工具。

佳瑞的博客 1133

慕课网JDBC

JDBC的基本概念 (1)连接数据库的桥梁 (2)由java语言编写的类和接口组成 (3)可以为多种数据库提供统一的访问 模型层(DB + DAO):封装了实现类 控制层:action层,负责调用模型层 视图层调用控制层 JDBC各种连接方式的对比: 1、JDBC + ODBC桥的方式。特点:需要数据库的ODBC驱动,仅适用于微软的系统 这种方式,JDBC将调用传递给ODBC,然

yuhan_9204的专栏 910

如何使用Ray和PyTorch训练模型

用户编写训练函数 → 定义单机训练逻辑。通过扩缩容配置 → 指定需要多少资源(Worker 数量、CPU/GPU)。训练器整合训练函数和配置 → 自动将训练函数分发到多个 Worker 上并行执行。Worker 运行训练函数 → 在分布式环境中完成模型训练。通过这种模式,Ray Train 实现了对分布式训练的抽象,用户只需关注单机训练逻辑,无需手动管理分布式通信和资源分配。

m0_62464865的博客 1922

NX二次开发-用户自定义资源栏选项卡RegisterActivationCallback

NX二次开发-用户自定义资源栏选项卡RegisterActivationCallback

阿飞2018 1385

慕课网 《轻松愉快之玩转SpringData》学习总结1

时间:2019年05月05日星期日 说明:本文内容均来自慕课网。@慕课网:http://www.imooc.com 部分参 https://segmentfault.com/a/1190000009211986 仅个人学习总结。如产生异议,请联系2964388297@qq.com。 第一章:课程介绍 Spring Data 概览 什么是Spring Data 主旨:provide a fam...

RLiBin的博客 1074

具身智能(26):RDK S100的LeRobot或Agile X piper机械臂控制模型

本文档详细介绍了基于ROS2的机器人控制模型架构与标定数据联动机制。核心采用"感知-规划-控制"闭环流程,通过激光雷达、相机和IMU的融合数据实现厘米级定位(≤1cm)。文档包含两大控制模型配置:1)RDKLeRobot模型,重点说明PID参数调节和标定文件路径设置;2)AgileXPiper模型,强调驱动安装与外部标定文件集成。针对常见问题提供解决方案,如控制指令无响应需验证标定路径,运动偏差过大需重新标定等。最后给出批量部署方案,通过复制基准配置文件实现多机器人快速配置,要求定位偏差

码农17年的博客 179

Java期末复习JDBC|网课笔记+校课总结

JDBC连接步骤和代码含义详解,各个API的含义

weixin_47011416的博客 911

Open3D 点云转深度图像【2026最新版】

python版本Open3D 实现的点云转深度图像,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 2838

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

慕课网java学习笔记

Java入门第一季 1.JAVA标识符注意事项: (1)JAVA标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含@、%、空格等其它特殊字符,不能以数字开头。 (2)标识符不能是Java关键字和保留字(Java预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。 (3)标识符是严格区分大小写的。 (4)标识符的命名最好能反映出其作用,做到见名...

mkvsxuwe的博客 629

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JDBC网课

java中的数据储存技术 在java中,数据库存取技术可以分为以下几类: JDBC直接访问数据库 JDO(java Data Object)技术 第三方O/R工具,如Hibernate、Mybatis等 jdbc是java访问数据库的基石,JDO,Hibernate,MyBatis只是更好的封装了JDBC JDBC介绍 jdbc是一个独立于特定数据库管理系统,通用的SQL数据库存储和操作的公共接口(一组API),定义了用于访问数据库的标准java类库(java.sql.javax.sql)使用这些类库

qq_45772415的博客 288

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JDBC实战(慕课)

慕课第二遍视频 JDBC连接mysql数据库 DBUtil package com.imooc.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private static final String UR

hewenjing8168的博客 494

Java网课资源分享

作者:是瑶瑶公主吖 链接:https://www.nowcoder.com/discuss/544889 来源:牛客网 Java健康项目: 链接:https://pan.baidu.com/s/1xH2fIFT_Ufhq-QKDCVtItQ 提取码:g6td 复制这段内容后打开百度网盘手机App,操作更方便哦 Java进阶13天项目 链接:https://pan.baidu.com/s/1aFCX0wAADBHwfCcldJ5mOw 提取码:9ah6 复制这段内容后打开百度网盘手机App,操作更方便哦 JD

qq_41112238的博客 2356

JDBC笔记

JDBC核心技术 第1章:JDBC概述 1.1 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。 持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 1.2 Java中的数据存储技术 在Java中,数据库存取技术可分为如下几类: JDBC直接访问数据库 J

weixin_45775746的博客 1万+

Spring入门篇--慕课网笔记

第1章 概述1-1 Spring入门课程简介 什么是框架 Spring简介 IOC(配置、注解) Bean(配置、注解) AOP(配置、注解、AspectJ、API) SpringFramework Spring Expression Language(SpEl) Spring Integration Spring Web Flow Spring Security Spring Data

学习笔记 1522

尚硅谷JDBC学习笔记

尚硅谷JDBC学习笔记 文章目录尚硅谷JDBC学习笔记写在前面1. 通过Driver接口获取数据库连接2. 通过DriverManager获取数据库连接3. 通过Statement执行更新操作4. 通过ResultSet执行查询操作5. PreparedStatement6. 利用反射及JDBC元数据编写通用的查询7. DAO设计模式8. JDBC的元数据9. JDBC获取插入记录的主键值10. ...

李英俊小朋友 2689

jdbc之mysql慕课_JDBC读写MySQL的大字段数据

不管你是新手还是老手,大字段数据的操作常常令你感到很头痛。因为大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的。而非一般的字段,一次即可读出数据。本人以前用到Spring+iBatis架构来操作大字段,结果以惨烈失败而告终,在网上寻求解决方案,也没找到答案。最终以JDBC来实现了大字段操作部分。本文以MySQL为例,通过最基本的JDBC技术来处理大字段的插入、读取操...

weixin_35271253的博客 227

Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not

学习慕课上的一个项目,使用的是Spring+Mybatis+c3po 学习搭建框架。 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: org.sprin...

康师傅没有眼泪 5万+
上一篇: 全面解析Java注解--慕课网笔记
下一篇: 版本管理工具介绍(SVN篇)--慕课网笔记
lmjun3
博客等级 码龄11年 78粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值