第十九天:听课笔记

来源:互联网 发布:java web应用 编辑:程序博客网 时间:2024/05/01 18:18

1. JDBC快速入门
   a.准备环境 建数据库、表 导入脚本source
     数据库驱动
   b.注册驱动
     DriverManager.registerDriver(XXX);  ---> Driver.class
   c.获得与数据库的连接
     Connection conn = DriverManager.getConnection(...);  url  用户名   地址
     jdbc:mysql://localhost:3306/jdbc
     Connection 要导入sql包的 面向接口编程 父类的引用指向子类对象
   d.向数据库发送一条sql命令
      代表sql命令的对象
      Statement st = conn.createStatement();
      boolean b = st.execute("..sql....");           //SQL语句也是对象
   e.取结果
     if(b){
 ResultSet rs = st.getResultSet();           //结果也是对象
        while(rs.next){.......}
        ResultSet导入sql包的
      }
   f.释放资源
     rs.close();
     st.close();
     conn.close();

2.ResultSet 底层原理 
 二维表 map<key,value>
 三个集合 一个集合管理另外两个

3.DriverManager.registerDriver(new XXX.Driver());  //内存中有两个Driver对象
源代码中 static代码块

Class.forName("....Driver");

DriverManager.getConnection(url,userName,userPsw)
url:

jdbc : mysql : [] //localhost:3306/test?参数名:参数值
协议    子协议      主机:端口     数据库
没有子协议 : 不能省略

jdbc:oracle:thin:@localhost:1521:数据库名

常用属性:
useUnicode=true&characterEncoidng=UTF-8

DriverManager setLoginTimeout

4.Statement
 execute(String sql)       查询 增加 修改 删除        返回boolean
 executeQuery(String sql)    查询 ==== st.execute(String sql) + st.getResultSet  返回ResultSet
 executeUpdate(String sql)   增加 修改 删除  返回更新了多少条记录
 addBatch(String sql) //批处理

5.ResultSet
开始在 第一行之前 next向下移一行

ResultSet封装结果集 大部分方法应该为get
 
数据库中的类型和Java中的类型

6.释放资源
try  catch  finally
XXX.close放在fianlly中

变量要放到外面定义

释放资源:两种写法
MySQL官方写法 李勇写法

catch e.printStackTrace 后面的代码还会执行?  throw new RuntimeException


7.CRUD

getString("")  不要用序号,要用名称拿

8.优化 将连接和释放封装到工具类中
Class.forName 放到静态代码块

java.sql.Date 是 java.util.Date的子类
sql ---> util 不用转
util ---> sql  new java.sql.Date(java.util.Date.getTime())

9.性别 bit boolean
sex 0 和 1
用0和1查码表 看到的有点不同

10.执行SQL脚本
source d:/XXX.sql    是/ 不是/

11.DAO
某一实体通过某一DAO与数据库打交道
User          UserDao

常见的操作:CRUD List

cn.itcast.dao
cn.itcast.dao.mysql MySQL实现

12.insert into XXX () values()
对于字符和日期的要用 ' 引起来
其他的 int float double boolean 不需要

13.生日 年月日 日历怎么做

Calender

DateFormat.getDateInstance

14.
UserDaoImpl
try{

} catch(Exception){
  throw new RuntimeException
}finally{
  relesase
}

15.Statement ---->  SQL注入

PreparedStatement
conn.prepareStatement()
excute()

16.乱码
查看数据库的编码
  show create database
  show create table


show variables like 'char%';
set character_set_result = gbk;

表  库   链接url?XXX ,user, password  :一致

原创粉丝点击