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. 持久性

7.21实习培训日志-JDBC JSP Servlet的更多相关文章

  1. 7.23实习培训日志-JDBC

    总结 今天下午考试,JDBC,这个本身很简单,但是需要我们Dockerfile+Docker Compose运行,这个东西就很复杂.原来学习时没有怎么看,这一次就很懵,完全不知道怎么弄,反正环境都没有 ...

  2. 7.22实习培训日志-JSP Servlet

    周末总结 今天下午在学习servlet,想自己做一个简单的例子,于是用idea新建一个maven项目,为了后文叙述方便,我们取名为项目1,点击create from archetype,我先选择org ...

  3. 7.30实习培训日志-SQL优化

    总结 今天早上考试,下午主要是老师引导我们学习SQL优化,晚上主要是同学的技术分享,杨松柏同学主要给我们分享了java的io的一些东西,c10k问题,bio(同步阻塞IO),NIO(同步非阻塞IO), ...

  4. 7.27实习培训日志-Oracle SQL(三)

    Oracle SQL(三) 视图 特性 简单视图 复杂视图 关联的表数量 1个 1个或多个 查询中包含函数 否 是 查询中包含分组数据 否 是 允许对视图进行DML操作 是 否 CREATE [OR ...

  5. 7.24实习培训日志-Docker-Compose

    Docker-Compose 对于昨天的考试,需要 项目根目录下需要docker/mysql/Dockerfile 文件用于构建mysql镜像 项目根目录下需要docker/java/Dockerfi ...

  6. 7.19实习培训日志- java进阶

    java进阶 java集合 Collection List ArrayList jdk1.2,异步处理,性能高,线程不安全 Vector jdk1.0,同步处理,性能低,线程安全 Set HashSe ...

  7. 7.10实习培训日志-markdown Git

    父模块github地址 一. markdown 1. markdown列表 html是一种发布的格式,markdown是一种书写的格式 区块引用 列表 图片 表格 html 标题 记笔记 写博客 2. ...

  8. 7.11实习培训日志-Git Linux

    Git git子模块 先在GitHub创建两个空的respository,一个super_project和一个sub_project. 然后在git bash中向库中写入一些文件. 在super_pr ...

  9. 7.31实习培训日志-docker sql

    docker mysql docker问题 今天问了老师有关docker的问题,entrypoint和cmd的区别,两者同时存在cmd的执行结果会被当做参数传入entrypoint. dockerfi ...

随机推荐

  1. STL 之 map的用法

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...

  2. Spring中如何动态注入Bean实例教程

    前言 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正确注入成功的情况. 本文将介绍一种在实际项目中基于动态的方式来提取Spring管理的Be ...

  3. jquery的几个语法总结和注意事项

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  4. Spark集群搭建(local、standalone、yarn)

    Spark集群搭建 local本地模式 下载安装包解压即可使用,测试(2.2版本)./bin/spark-submit --class org.apache.spark.examples.SparkP ...

  5. MapReduce修改输出的文件名

    MapReduce默认输出的文件名称格式如下:part-r-00000 自定义名称,比如editName,则输出的文件名称为:editName-r-0000,此方法没有彻底修改整个文件名,只修改了一部 ...

  6. 图文了解 Kafka 的副本复制机制

    让分布式系统的操作变得简单,在某种程度上是一种艺术,通常这种实现都是从大量的实践中总结得到的.Apache Kafka 的受欢迎程度在很大程度上归功于其设计和操作简单性.随着社区添加更多功能,开发者们 ...

  7. C# 多服务器上传 示例

    图片服务器  带宽越来越不够用,还有当一台服务器的机房出问题的时候,不影响 整个web,以及 考虑网通电信访问服务器的 速度,所以考虑使用多台 图片 服务器 这个时候要求 图片服务器 内容是同步 的  ...

  8. JQUERY获取html标签自定义属性值或data值

    //获取属性值 1 <div id="text" value="黑哒哒的盟友"><div> jQuery取值: $("#tex ...

  9. 深度学习—BN的理解(二)

    神经网络各个操作层的顺序: 1.sigmoid,tanh函数:conv -> bn -> sigmoid -> pooling 2.RELU激活函数:conv -> bn -& ...

  10. C#异步编程之浅谈Task

    上一篇讲到了.Net4.5新增的async和await关键字,其实async和await算是一组标记,真正实现异步操作的是Task新开的任务线程. 什么是Task Task是.Net4.0新增用来处理 ...