A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 g207776411 于 2018-5-9 17:08 编辑

Day_10JDBC的用法和操控数据库

Day_10使用JDBC连接数据库和Java代码JDBC:
  • JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,实际就是java后台连接数据库的一种规范

Connection在我们程序中是非常珍贵的,所以我们在编写代码的时候,我们一般不轻易的多次创建Connection对象
  • DriverManager:驱动管理类

    • 作用一: 注册驱动
    • 作用二:获得连接

  • Statement:执行SQL语句

    • 作用一: 执行SQL
    • 作用二: 执行批处理


重点
操作数据库的步骤
  • 第一步,注册驱动

    • Class.forname("com.mysql.jdbc.Driver")


  • 第二步,连接数据库

    • Connection conn = DirverManager.getConnection(url,username,password)

  • 第三步,创建执行SQL语句的对象
  • String sql="Sql语句"
  • 第四步,编写SQL语句,\\执行SQL语句

    • 查询数据用exectueQuery
    • 修改\添加\删除用exectueupdate

  • 第五步,预编译

    • preoaredStatement ps= conn.prepareStatement

  • 第六步,为SQL语句设置值

    • ps.setxxx(int n,值) n代表几个问号


  • 第七步,执行Sql语句

    • 执行增删\修改   ps.executeUpDate
    •                 // 执行SQL语句返回值                int row = statement.executeUpdate();
    • 判断执行成功的 然后输出语句: 执行成功
    •    */
            public void demoProp3() {
                Connection conn = null;
                PreparedStatement statement = null;
                try {
                    // 获取连接
                    conn = JDBCUtils.getConnection();
                    // 编写SQL语句
                    String sql = "delete from user where id=?";
                    // 预编译Sql语句
                    statement = conn.prepareStatement(sql);
                    // 设置参数
                    statement.setString(1, "2");
                    // 执行SQL语句返回值
                    int row = statement.executeUpdate();
                    if (row > 0) {
                        System.out.println("删除成功!");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    JDBCUtils.release(statement, conn);
                }
            }
        ​
    • 查询数据需要遍历结果集(注意:一定要定义结果集对象
      // 定义接收结果集的对象                ResultSet rs = null;)

      • 执行数据用

        • prepareStatement对象.executeQuery()


    •       @Test
            /**
             * 数据库的查询操作
             */
            public void demo2() {
                // 定义数据库连接的接收对象
                Connection conn = null;
                // 定义接收预编译对象的SQL语句
                PreparedStatement patmt = null;
                // 定义接收结果集的对象
                ResultSet rs = null;
        ​
                try {
                    // 获得连接;
                    conn = JDBCUtils.getConnection();
                    // 编写SQL语句
                    String sql = "select * from user";
                    // 预编译SQL语句
                    patmt = conn.prepareStatement(sql);
                    //执行数据
                    rs = patmt.executeQuery();
        ​
                    while (rs.next()) {
                        System.out.println(rs.getInt("id") + rs.getString("username") + " " + rs.getString("password") + " "
                                + rs.getString("nickname"));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    JDBCUtils.release(rs, patmt, conn);
                }
        ​
            }
        ​
    • 用while(rs.next){ rs.getxxx(),....}

    • 第八步,关闭所有的资源


  • 对扩展是开放的
  • 对修改代码是关闭的

重点提取配置信息到配置文件
  • 属性文件

    • 格式: 扩展明是.properties
    • 内容: key =value
    •   properties prop= new Properties();
        prop.load(new FileIntputStream("src/db.properties"));
        ​
        //key 键值是自己定义的
        properties.getProperty(String key);
        ​

  • XML文件

PreparedStatement的用法
在preparedStatement中有传参数的时候,我们要用  ?  号占位符
在prepareStatement中的预编译中,如果用到模糊查询,我们需要在设置参数的时候来设置百分号%%
  • 例如:

    •   
        //编写SQL语句
        String sql="delete from user where id=?";
    •   
        ​





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马