Jdbc java连接数据库的方式
android ContentProvider 访问数据库
Jdbc (Java) 一组接口
java.sql.*
Connection
Statement|PreparedStatement
ResultSet
不同的数据库厂商 提供 Jdbc接口的实现
mysql-connector-java-5.0.5-bin.jar
jdbc编程步骤
1) Class.forName("com.mysql.jdbc.Driver");
Connection c = DrvierManager.getConnection("jdbc:mysql://localhost:3306/xxx","","");
2) String sql = "select deptno,dname from xx where name = ?";
PreparedStatement pstmt = c.prepareStatement(sql);
pstmt.setXXX(1,xxx);
pstmt.executeUpdate();
ResultSet rs = pstmt.executeQuery();
3) while(rs.next()){
rs.getInt(1);
rs.getString(2);
}
4) 关闭资源
rs.close()
pstmt.close()
conn.close()
JdbcUtil工具类
1 getConnection(){
Class.forName("com.xxx");
DriverManager.getConnection(,"","");
}
2 release(){
rs.close();
pstmt.close();
conn.close();
}
xxx.properties
key = value
java.util.Properties
properties.load(is);
properties.getProperty();
设计思想 :
当程序中 出现经常需要修改的字符串
那么把字符串转移到配置文件中
----------------------------------
作业:
1 能不能 用相对路径的方式 获得 输入流
corejava
.class.getResourceAsStream("");
相对路径 src根
javaweb (Servlet Jsp)
2 代码分析 用户
1) 用户页面
2) java程序 (业务,功能)
3) 数据库 table (数据)
开发过程 3--2---1
create table t_user(
id int auto_increment primary key,
name varchar(12),
password varchar(12)
);
insert into t_user (name,password) values ('suns','123456');
insert into t_user (name,password) values ('xiaohei','888888');
-----------------------------------------------------------------------------
补充开发技巧
1 分页查询
Mysql
select empno,ename,sal from emp limit 0,5;
2 事务控制
事务控制语句
mysql set autocommit = 0;
commit / rollback
Jdbc
Connection.setAutCommit(false); 开启事务
Connection.commit();
Connection.rollback();
--------------------------------------------
DAO data access object
数据 访问 对象
封装 ---> 访问数据库的代码 (jdbc)
DAO 封装java访问数据库代码的类
1 面向对象 体会
java --- > String name
int age
mysql ----> 表
jdbc
java 对象 ---- database 表
public class Stduent{
private int id;
private String name;
private int score;
}
s1.id = 10 ,s1.name = "suns", s1.score=10;
s2.id = 10 ,s2.name = "suns", s2.score=10;
t_student
id name score
10 suns1 10
10 suns1 10
对象 数据库 对应
ORM object relationship mapping
1 类 --- Table
2 属性 --- Column
3 对象 ---- Row
专门对应表格的类 ----> 实体类 --- POJO
DAO类 封装 访问数据库的代码
public class UserDAO{
}
public class AccountDAO{
}
-----------------------------------------
1 创建实体类
2 创建实体类 对应的 DAO
List 有序 可重复
List.add(user1); index = 0
List.add(user2); index = 1
Set 无序 不可重复
Set.add(user1);
Set.add(user2);
Map key = value 1 = User1
2 = User2
如果对集合应用查找 优先 1 Map
key = value 优先 2 Map
--------------------------------------
设计角度 DAO
1 DAO 定义成接口
UserDAO接口
UserDAOImpl
UserDAO
把一个类 定义成接口 原因:这个类可能有多种实现
Connection sun 接口
UserDAO
save(User u )
UserDAOImpl
save(User u ){
Connection
PreparedStatement
ResultSet
sql
}
UserDAOImp
save(User u){
session.save(u);
}
设计模式 工厂设计模式
生产产品
生产对象
-------------------------------------
bank
1 注册
2 登陆
3 显示所有账户信息
4 转账
t_account
id name password balance
DAO ---> DAOFactory创建