创建jdbc应用(4+6+6+6)

第1天(4课时)

创建jdbc应用

创建jdbc应用步骤分7步
1)载入jdbc驱动(指定我要连接到哪种数据库,连接不同数据库用不同驱动)
2)定义连接url(连接准备 url,端口,用户名,密码)
3)建立连接
4)创建PreparedStatement(动态) Statement(静态的)(拼sql语句)
5)执行数据库命令(crud)
6)结果的处理
7)关闭连接

浓缩
1,2连接准备---> 3 连接 ----> 4,5给数据库下指令---> 6处理结果---> 7关闭连接
连接各数据库的文档放在
E:\java16\javase\手册\JDBC—数据库的连接字符串及连接方法(各类数据库)

代码开始

建包

右键src new-package-输入com.neuedu.jdbc -ok

建类

右键包-new class-JdbcInsert.java
public class JdbcInsert {
@Test
public void insert(){

}
}

引入junit

用@Test因为没有引junit会报错,鼠标点击红色叉号,接eclipse指示引入junit

1)载入jdbc驱动(指定我要连接到哪种数据库,连接不同数据库用不同驱动)

https://www.runoob.com/w3cnote/java-class-forname.html

Class.forName("com.mysql.jdbc.Driver");

注意,要把mysql jar包引到工程里。
操作方法:工程右键-build path-configure build path-add libraries选项卡-add exteral jar -选中mysql的jar包-ok

2)定义连接url(连接准备 url,端口,用户名,密码)

  String url="jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
  String user="root";
  String password="root";

3)建立连接

  Connection conn=DriverManager.getConnection(url, user, password);

4)创建PreparedStatement(动态) Statement(静态的)(拼sql语句)

  Statement st=conn.createStatement();

5)执行数据库命令(crud)

executeUpdate: 用于 insert update delete
executeQuery: 用于 select

 ResultSet rs= st.executeQuery("select empno,ename,deptno from emp where deptno=10");

6)结果的处理

while(rs.next()){
          //双引号里是数据库里的字段名,
         String e_name=rs.getString("ename");
         System.out.println(e_name);
         int emp_no= rs.getInt("empno");
         System.out.println(emp_no);
         int deptno=rs.getInt("deptno");
         System.out.println(deptno);
      }

7)关闭连接

     rs.close();
  st.close();
  conn.close();

完整代码

@Test
  public void query() throws ClassNotFoundException, SQLException {
      //1)载入jdbc驱动(指定我要连接到哪种数据库,连接不同数据库用不同驱动)
      Class.forName("com.mysql.jdbc.Driver");
      //2)定义连接url(连接准备 url,端口,用户名,密码)
      String url="jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
      String user="root";
      String password="root";
      //3)建立连接
      Connection conn=DriverManager.getConnection(url, user, password);
      //4)创建PreparedStatement(动态) Statement(静态的)(拼sql语句)
      Statement st=conn.createStatement();
      //5)执行数据库命令(crud)  
      //executeUpdate   insert update delete
      //executeQuery select
      //查询10号部门的员工的员工编号,员工姓名,部门编号
      ResultSet rs= st.executeQuery("select empno,ename,deptno from emp where deptno=10");
      //6)结果的处理
      while(rs.next()){
          //双引号里是数据库里的字段名,
         String e_name=rs.getString("ename");
         System.out.println(e_name);
         int emp_no= rs.getInt("empno");
         System.out.println(emp_no);
         int deptno=rs.getInt("deptno");
         System.out.println(deptno);
      }
      //7)关闭连接
      rs.close();
      st.close();
      conn.close();
}

发现异常不显示,改造代码

  @Test
    public void query1() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            // 1)载入jdbc驱动(指定我要连接到哪种数据库,连接不同数据库用不同驱动)
            Class.forName("com.mysql.jdbc.Driver");
            // 2)定义连接url(连接准备 url,端口,用户名,密码)
            String url = "jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
            String user = "root";
            String password = "root";
            // 3)建立连接
            conn = DriverManager.getConnection(url, user, password);
            // 4)创建PreparedStatement(动态) Statement(静态的)(拼sql语句)
            st = conn.createStatement();
            // 5)执行数据库命令(crud)
            // executeUpdate insert update delete
            // executeQuery select
            // 查询10号部门的员工的员工编号,员工姓名,部门编号
            rs = st.executeQuery("select empno,ename,deptno from emp where deptno=10");
            // 6)结果的处理
            while (rs.next()) {
                // 双引号里是数据库里的字段名,
                String e_name = rs.getString("ename");
                System.out.println(e_name);
                int emp_no = rs.getInt("empno");
                System.out.println(emp_no);
                int deptno = rs.getInt("deptno");
                System.out.println(deptno);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7)关闭连接
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

添加 修改 删除执行的是executeUpdate 返回类型为int而不是ResultSet,所以,这三种操作没有结果集

删除代码如下:

@Test
    public void del() {
        Connection conn = null;
        Statement st = null;
        try {
            // 1)载入jdbc驱动(指定我要连接到哪种数据库,连接不同数据库用不同驱动)
            Class.forName("com.mysql.jdbc.Driver");
            // 2)定义连接url(连接准备 url,端口,用户名,密码)
            String url = "jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
            String user = "root";
            String password = "root";
            // 3)建立连接
            conn = DriverManager.getConnection(url, user, password);
            // 4)创建PreparedStatement(动态) Statement(静态的)(拼sql语句)
            st = conn.createStatement();
            // 5)执行数据库命令(crud)
            // executeUpdate insert update delete
            // executeQuery select
            // 查询10号部门的员工的员工编号,员工姓名,部门编号
            int count=st.executeUpdate("delete from emp_back where ename='SCOTT'"); 
System.out.println(count);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7)关闭连接
            try {
                st.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    } 

作业

1)练习修改和删除
2)写添加和修改

第2天(6课时)

项目阶段(正常)
1)立项
2)需求分析(需求规格说明书)
3)概要设计(界面原型 部署模型 架构)
4)详细设计(包 类 内部接口(输入、输出) 流程图 外部接口)
5)编码(实现类)
6)测试(单元测试 集成测试 模拟现场环境做一个测试环境 性能测试)
7)部署实施(部署到生产环境)
8)上线运行

项目阶段(有时)
1)立项
2)需求分析(需求规格说明书)
3)概要设计(界面原型 部署模型 架构)
5)编码(实现类)
6)测试(单元测试 集成测试 模拟现场环境做一个测试环境 性能测试)
7)部署实施(部署到生产环境)
8)详细设计(包 类 内部接口(输入、输出) 流程图 外部接口)
9)上线运行
10)验收

用户注册
字段:用户id,用户名,密码,邮箱,权限
表名:t_*****

建表语句

/*
Navicat MySQL Data Transfer

Source Server : mysql
Source Server Version : 50553
Source Host   : localhost:3306
Source Database   : java16

Target Server Type: MYSQL
Target Server Version : 50553
File Encoding : 65001

Date: 2018-10-17 10:30:43
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) NOT NULL,
  `user_pwd` varchar(20) NOT NULL,
  `user_email` varchar(100) DEFAULT NULL,
  `user_power` int(11) NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=1;

实体类

public class User {
    // 用户id
    private int id;
    // 登录名
    private String name;
    // 密码
    private String password;
    // 邮箱
    private String email;
    // 权限 0-普通用户 1-管理员
    private int power = 0;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

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

    public int getPower() {
        return power;
    }

    public void setPower(int power) {
        this.power = power;
    }
}

开发主页

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    public class MainMenu {
        public static void main(String[] args) {
            while (true) {
                System.out.println("欢迎使用neusoft用户管理系统");
                System.out.println("======================");
                System.out.println("用户登录---------------1");
                System.out.println("用户注册---------------2");
                System.out.println("退出程序---------------3");
                Scanner sc = new Scanner(System.in);
                //接受用户输入
                int choice = sc.nextInt();
                switch (choice) {//根据用户输入,进入不同界面
                case 1:
                    // @todo进入用户登录界面
                    System.out.println("用户登录");
                    break;
                case 2:
                    //用户注册
                    RegMenu  regMenu=new RegMenu();
                    regMenu.show();
                    break;
                case 3:
                    System.exit(0);
                default:
                    System.out.println("不好意思,您输入错误!");
                    break;
                }
            }
    
        }
    }

开发注册页

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.dao.UserManagerDao;
    import com.neuedu.jdbc.pojo.User;
    
    public class RegMenu {
    
        public void show() {
            //业务层,中间如果有涉及数据库的,咱们调用dao(数据访问对象)类去存库
            //让用户输入个人信息
            System.out.println("用户注册界面");
            System.out.println("======================");
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入您的用户名:");
            String userName=sc.next();
            System.out.println("请输入您的密码:");
            String userPwd=sc.next();
            System.out.println("请输入您的邮箱:");
            String email=sc.next();
            //@todo做一些必要验证
            //封装好一个对象,用于调用存库方法时用
            User user=new User();
            user.setEmail(email);
            user.setUserName(userName);
            user.setUserPwd(userPwd);
            //把个人信息存库  int 型的结果
          //需要调用 dao层进行存库
             UserManagerDao umd=new UserManagerDao();
             int result=umd.addUser(user);
            //根据返回结果给用户提示
             if(result>0){
                 System.out.println("注册成功");
             }else{
                 System.out.println("注册失败");
             }
            //回到主界面
            return;
        }
    }

创建实现类

    package com.neuedu.jdbc.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    import com.neuedu.jdbc.pojo.User;
    
    public class UserManagerDao {
    
        public int addUser(User user) {
            Connection conn=null;
            PreparedStatement ptst=null;
            int result=0;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://localhost:3306/java13?characterEncoding=UTF-8&useUnicode=true";
                String username="root";
                String password="root";
                conn=DriverManager.getConnection(url, username, password);
                ptst=conn.prepareStatement("insert into t_user values(null,?,?,?,?)");
                ptst.setString(1, user.getUserName());
                ptst.setString(2, user.getUserPwd());
                ptst.setString(3, user.getEmail());
                ptst.setInt(4, user.getUserPower());
                result=ptst.executeUpdate();
            } catch (ClassNotFoundException | SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally{
                try {
                    ptst.close();
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            return result;
        }
    
    }

作业

练习注册功能
思考用户登录功能开发

第3天(6课时)

第一项任务:把昨天写的代码全删除,从头来一遍(3课时)
新建项目-定义实体类-写main方法-定义menu-写dao接口-写dao实现类,整个上午做完注册全流程
第二项任务:登录功能开发

登录功能

登录用户缓存

    package com.neuedu.jdbc.menu;
    
    import com.neuedu.jdbc.pojo.User;
    /**
     * 虚拟缓存
     * @author Administrator
     *
     */
    public class LoginUser {
    //共享对象
    public static User currentUser;
    
    public static User getCurrentUser() {
        return currentUser;
    }
    
    public static void setCurrentUser(User currentUser) {
        LoginUser.currentUser = currentUser;
    }
    }

LoginMenu

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.dao.UserManagerDao;
    import com.neuedu.jdbc.pojo.User;
    
    public class LoginMenu {
    
        public void show() {
            
            System.out.println("欢迎登录界面");
            System.out.println("======================");
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入您的用户名");
            String userName=sc.next();
            System.out.println("请输入您的密码");
            String userPwd=sc.next();   
            //封装一个user对象
            User user=new User();
            user.setUserName(userName);
            user.setUserPwd(userPwd);
            //调用dao的鉴权方法,验证用户名密码正确性
            UserManagerDao umd=new UserManagerDao();
            //根据用户名密码查询用户
            User dbUser=umd.findUserByNameAndPassword(user);
            //如果用户查询到了,进一步做
            
            if(null!=dbUser){
                System.out.println("登录成功!");
                LoginUser.currentUser=dbUser;
                //向缓存里存一个user对象,static 的,修改成功后,把对象更新
            if(dbUser.getUserPower()==0){
                //跳转到普通用户界面
                UserMenu um=new UserMenu();
                um.show();
            }else{
                //跳转到管理员界面 学生独立完成
            }
                    
            }else{
                System.out.println("没有查询到该用户");
                return;
            }
        }
    }

UserManagerDao

public User findUserByNameAndPassword(User user) {
    User db_user=null;
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    try {
        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/java13?characterEncoding=UTF-8&useUnicode=true";
        String userName="root";
        String password="root";
        //获取连接
        conn=DriverManager.getConnection(url, userName, password);
        //新建查询,预处理语句
        //根据用户名和密码查询用户
        ps=conn.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
        ps.setString(1, user.getUserName());
        ps.setString(2, user.getUserPwd());
        //查询要返回结果集
        rs=ps.executeQuery();
        //对结果集进行处理 如果确认返回结果是一行用if,如果是多条,用while
        if(rs.next()){
            //?
            db_user=new User();
            db_user.setId(rs.getInt("user_id"));
            db_user.setUserName(rs.getString("user_name"));
            db_user.setUserPwd(rs.getString("user_pwd"));
            db_user.setEmail(rs.getString("user_email"));
            db_user.setUserPower(rs.getInt("user_power"));
        }
        
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            rs.close();
            ps.close();
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    // TODO Auto-generated method stub
    return db_user;
}

UserMenu

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.pojo.User;
    
    public class UserMenu {
        //四种
        //无参无返回值的 public void  methodName();
        //无参有返回值的public String methodName();
        //有参无返回值的 public void methodName(String username,String password);
        //           public void methodName(User);
        //有参有返回值的 public void methodName(String username,String password);
        //返回权限修饰符  返回值类型  方法名(参数列表)
         //这个方法可以接受参数类型为User的,返回为void的,方法名为show()
        public void show(){
            while(true){
            System.out.println(LoginUser.currentUser.getUserName()+"您好:"+"您的权限是普通用户");
            System.out.println("=========================");
            System.out.println("修改个人信息---------------1");
            System.out.println("查询个人信息---------------2");
            System.out.println("退出程序------------------3");
            Scanner sc = new Scanner(System.in);
            //接受用户输入
            int choice = sc.nextInt();
            switch (choice) {
            case 1:
                System.out.println("修改自己的信息");
                UpdateUserMenu updateMenu=new UpdateUserMenu();
                updateMenu.show();
                break;
            case 2:
                //查询个人信息
                System.out.println(LoginUser.currentUser.getId()+" "+LoginUser.currentUser.getUserName()+" "+LoginUser.currentUser.getUserPwd()+" "+LoginUser.currentUser.getEmail()+"普通用户");
                break;
            case 3:
                System.exit(0);
                break;
            default:
                System.out.println("选项错误!");
                break;
            }
            }
        }
    }

UpdateUserMenu

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.dao.UserManagerDao;
    import com.neuedu.jdbc.pojo.User;
    
    public class UpdateUserMenu {
    
        public void show() {
            //从缓存中获取当前用户信息
            User old_user=LoginUser.currentUser;
            System.out.println("您现在的信息是"+old_user.getId()+old_user.getUserName()+old_user.getUserPower()+old_user.getEmail());
            System.out.println("================");
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入要修改的姓名");
            String new_Name=sc.next();
            System.out.println("请输入要修改的密码");
            String new_Pwd=sc.next();
            System.out.println("请输入要修改的邮箱");
            String new_email=sc.next();
            User new_user=new User();
            new_user.setId(old_user.getId());
            new_user.setEmail(new_email);
            new_user.setUserName(new_Name);
            new_user.setUserPwd(new_Pwd);
            //给dao传过去,入库去
            UserManagerDao upDate=new UserManagerDao();
            //添加,修改,删除都返回int
            int count=upDate.updateUser(new_user);
            if(count>0){
                System.out.println("修改成功");
                //更新组成存的用户信息
                LoginUser.currentUser=new_user;
            }else{
                System.out.println("修改失败");
            }
        }
    }

MainMenu

......
case 1:
//用户登录
LoginMenu loginMenu=new LoginMenu();
loginMenu.show();
break;
......

修改用户信息关键代码

public int updateUser(User new_user) {
    Connection conn=null;
    PreparedStatement ps=null;
    int result=0;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/java13?characterEncoding=UTF-8&useUnicode=true";
        String userName="root";
        String password="root";
        conn=DriverManager.getConnection(url, userName, password);
        ps=conn.prepareStatement("update t_user set user_name=?,user_pwd=?,user_email=? where user_id=? ");
        ps.setString(1,new_user.getUserName());
        ps.setString(2,new_user.getUserPwd());  
        ps.setString(3,new_user.getEmail() );
        ps.setInt(4, new_user.getId());
        //返回条数
        result=ps.executeUpdate();
        
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            ps.close();
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    return result;
}

第四天

制作数据库工具类

第一步:建包

new -package-com.neuedu.utils

制作数据库工具类

第一步:建包

new -package-com.neuedu.utils

public class DBUtil {
    // 用于数据库连接的方法
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
            String UserName = "root";
            String password = "root";
            conn = DriverManager.getConnection(url, UserName, password);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据库连接异常" + e.getMessage());
        }
        return conn;
    }

    public static void closeConnection(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("关闭连接异常" + e.getMessage());
        }
    }
}

引入db.propertis

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true
userName=root
passWord=root

完整代码

package com.neuedu.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {
    // 用于数据库连接的方法
    public static Connection getConnection() {
        Connection conn = null;
        try {
            //载入资源文件
            Properties prop=new Properties();
            prop.load(DBUtil.class.getResourceAsStream("/db.properties"));
            //读取资源文件各属性
            String driver=prop.getProperty("driver");
            String url = prop.getProperty("url");
            String UserName = prop.getProperty("userName");
            String password = prop.getProperty("passWord");
            Class.forName(driver);
            conn = DriverManager.getConnection(url, UserName, password);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据库连接异常" + e.getMessage());
        }
        return conn;
    }

    public static void closeConnection(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("关闭连接异常" + e.getMessage());
        }
    }
   }

查询所有用户关键代码

dao实现类

@Override
public List<User> findAll() {
    conn=DBUtil.getConnection();
    List<User> userList=new ArrayList();
    try {
        st=conn.prepareStatement("select * from t_user");
        rs=st.executeQuery();
        while(rs.next()){
            //每次都新实例化一个对象
            User user=new User();
            //把从数据库查询到的记录封装到对象里
            user.setId(rs.getInt("user_id"));
            user.setName(rs.getString("user_name"));
            user.setPassword(rs.getString("user_pwd"));
            user.setEmail(rs.getString("user_email"));
            user.setPower(rs.getInt("user_power"));
            //把对象放到list里
            userList.add(user);
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return userList;
}

页面展示

System.out.println("查询结果");
           for(User u:userlist){
               System.out.println(u.getId()+"   "+u.getName()+"   "+u.getPassword()+"   "+u.getEmail()+"  "+u.getPower());
               System.out.println("================================================");
           }

作业:
学生独立完成项目

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,810评论 0 11
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,502评论 0 4
  • 本文主要内容 1、JDBC 2、DBUtils 01JDBC概念和数据库驱动程序 A: JDBC概念和数据库驱动程...
    胜浩_ae28阅读 396评论 0 0
  • 本文包括传统JDBC的缺点连接池原理自定义连接池开源数据库连接池DBCP连接池C3P0连接池Tomcat内置连接池...
    廖少少阅读 16,738评论 0 37
  • 网上经常有我国输液现象是否过度的争议。虽然输液是一种很好的治疗方法,国外也并不排斥,但不可否认的是,在我国 ,输液...
    Arrowzg阅读 5,765评论 0 0