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. JS获取内联样式

    JS获取内联样式 //获取内联样式 function getCss(obj,attr){//obj:对象,name:style属性 if(obj.currentStyle) { return obj. ...

  2. 单机版 JedisUtil({基本操作封装工具类})【二】

    <!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...

  3. c语言代码风格2

    1.注释 注释的目的是为了说明做了什么,而不是怎么做,所以注释表达应该准确而又简洁.注释要放在被注释内容的上方或右方.注释一般采用/*.........*/或//........ 对代码源文件和函数应 ...

  4. ES _all、_source的使用——_all字段连接所有字段的值构成一个用空格(space)分隔的大string而被analyzed和index,document主体保存在_source中

    1._all 1.1_all field _all字段是一个很少用到的字段,它连接所有字段的值构成一个用空格(space)分隔的大string,该string被analyzed和index,但是不被s ...

  5. JSP分页1

    分页 1.什么分页? 第N页/共M页 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 尾页 口 go 分页的优点:只查询一页,不用查询所有页! 2.分页数据 页面的数据都是由Servl ...

  6. json-lib的一些过滤操作

    package demo4; import java.io.Serializable; import net.sf.json.JSONString; public class User impleme ...

  7. 3.3 CCSprite 精灵详解

    3.3.1 创建精灵常用的 4 种方式 (当然还有其他方式,只不过 这四种比较常用) //创建精灵常用的 4 种方式 CCSprite* spr1 = CCSprite::create(const c ...

  8. poj2001Trie树模板

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...

  9. 9th

    2017-2018-2 20179212<网络攻防实践>第9周作业 视频学习 KaliSecurity压力测试工具 压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能够提供的 ...

  10. google android sdk下载hoosts

    203.208.46.146 www.google.com #这行是为了方便打开Android开发官网 现在好像不VPN也可以打开 74.125.113.121 developer.android.c ...