7.21实习培训日志-JDBC JSP Servlet

JDBC JSP Servlet

总结

今天早上的考试主要考Java的网络,HttpClient的get,post方法,Socket的文件传输和Xml和Json文件的解析,对于HttpCLient很简单,只需要用HttpCLient去读取文件就行了,而对于Socket需要注意用换行符,因为有时候没有换行符代码会阻塞在readline处,使代码不往下执行,但是又很难找到原因。而对于Xml和Json文件的解析,需要注意编码格式,用utf-8编码,不然编码会有问题。如果有第三方库的话,mvn package打包的jar中只会含有自己的代码,直接用java -jar *.jar会报一个类找不到的错误,对于这种情况,我们需要在maven打包时把第三方依赖打包进去,有多种方式可以选择,最简单的选择maven-assembly-plugin插件,设置descriptorRefs运行即可。

maven打包

maven打包打上第三方依赖包

Maven生成可以直接运行的jar包的多种方式

maven-dependency-plugin插件的使用

Copying project dependencies

IDEA错误

Error:java: Compilation failed: internal java compiler error

解决

  1. 1、查看项目的jdk(Ctrl+Alt+shift+S) File ->Project Structure->Project Settings ->Project
  2. File ->Project Structure->Project Settings -> Modules -> (需要修改的工程名称) -> Sources ->
  3. 查看idea中Java配置(Compiler->Java Compiler)

JDBC

ODBC:Open DataBase Connetivity

JDBC:Java DataBase Connectivity

JDBC API

  1. DriverManager
  2. Connection
  3. Statement
  4. PreparedStatement
  5. ResultSet

JDBC Driver API

  1. JDBC-ODBC bridge
  2. 部分java技术的本地API驱动程序
  3. 全部基于java技术的本地API驱动程序
  4. 全部基于java技术的本地协议驱动程序

JDBC编程流程

  1. 加载驱动
  2. 打开连接
  3. 执行查询
  4. 处理结果
  5. 清理环境

JDBC为什么使用反射加载驱动

  1. 驱动jar包不存在时,我们有其他方法
  2. 解耦(避免或减少未来切换数据源时对代码的变更。)

JDBC java mysql

  1. 使用mysql-connector-java(maven)
  2. mysql-connector-java 8用Class.forName("com.mysql.cj.jdbc.Driver");,不要用Class.forName("com.mysql.jdbc.Driver");

JDBC 连接 MySQL 时碰到的小坑

为什么不需要Class.ForName("com.mysql.cj.jdbc.Driver")也可以执行

query

private static void query(){
        String sql = "select * from t_user where id = ?";
        try(Connection connection = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PWD);
            PreparedStatement statement = connection.prepareStatement(sql);){
            statement.setInt(1,2);
            ResultSet rs = statement.executeQuery();
            while (rs.next()){
                System.out.print(rs.getInt("id")+" ");
                System.out.print(rs.getString("username")+" ");
                System.out.print(rs.getString("pwd")+" ");
                System.out.print(rs.getString("email")+" ");
                System.out.println();
            }
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

insert

private static void insert(){
        String sql = "insert into t_user(id,username,pwd,email) values  (?,?,?,?)";
        try (Connection connection = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PWD);
             PreparedStatement statement = connection.prepareStatement(sql);){
            statement.setInt(1,3);
            statement.setString(2,"dey");
            statement.setString(3,"123");
            statement.setString(4,"123@qq.com");
            //返回值是更新的记录数量
            int resultNum = statement.executeUpdate();
            System.out.println("插入的记录数量:"+resultNum);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

update

private static void update(){
        String sql = "update t_user set username=?,pwd=?,email=? where id =?";
        try (Connection connection = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PWD);
             PreparedStatement statement = connection.prepareStatement(sql);){
            statement.setString(1,"lcu");
            statement.setString(2,"123u");
            statement.setString(3,"123u@qq.com");
            statement.setInt(4,3);
            //返回值是更新的记录数量
            int resultNum = statement.executeUpdate();
            System.out.println("更新的记录数量:"+resultNum);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

delete

private static void delete(){
        String sql = "delete from t_user where id=?";
        try (Connection connection = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PWD);
             PreparedStatement statement = connection.prepareStatement(sql);){
            statement.setInt(1,3);
            //返回值是更新的记录数量
            int resultNum = statement.executeUpdate();
            System.out.println("删除的记录数量:"+resultNum);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

JDBC 事务

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性
原文地址:https://www.cnblogs.com/sufferingStriver/p/9403437.html