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 :一致