课程目标
1、什么是JDBC?
2、Jdbc的执行原理
3、写程序
1、什么是JDBC?
java Data Base Connectivity(java数据库连接)
由一些接口和类构成的API,这些接口和类主要在java sql,javax sql包中
数据库系统的组成:数据,数据库,程序,操作系统,人员
此处我们要学的是数据库系统中的程序
2、Jdbc的执行原理(执行步骤:六句话)
2.1. 加载驱动
2.2. 建立连接
2.3 准备sql语句
2.4 执行sql语句
2.5 处理结果
2.6 断开连接,释放资源
3、写程序
3.1 导入jar包(常常会引用别人已经实现的方法,通常会封装成jar包)
3.2. 写程序
3.2.1 封装DBUtil 工具类
// 封装DBUtil 工具类
static Connection coon;
static String url;
static String user;
static String password;
static PreparedStatement ps;
static ResultSet rs;
static{
url="jdbc:mysql://localhost:3306/student";
user="root";
password="root";
}
//1.2.加载驱动建立连接
public static ResultSet getConnection(){
try {
//1.加载驱动
Calss.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//2.建立连接
Connection coon = Drivermanager.getConnection(url,user,password);
return conn;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//6.断开连接,释放资源
public static void close(){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//查看方法
//返回一个ResultSet类型的rs 可以通过while处理数据
public static ResultSet select (String sql,Object[] obj){
conn = getConnection;//建立连接
try {
//准备sql语句
PreparedStatement ps = conn.prepareStatement(sql);
//给sql语句中的?占位符赋值
for(int i = 0; i < obj.length; i++){
ps.setObject(i+1, obj[i]);
}
//执行sql语句
rs = ps.excuteQuery();
return rs;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//修改方法(添加、删除、修改)
//返回一个int类型的信息修改的行数
public static int update(String sql,Object[] obj){
conn = getConnection();
try {
PreparedStatement ps = conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
ps.setObject(i+1, obj[i]);
}
int i = ps.executeUpdate();
return i;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
3.2.2 测试类
查询
public static void main(String[] args){
//查询
String sql="select * from user where u_name=?";
Object[] obj={"大岚"};
ResultSet rs = DBUtil.select(sql, obj);
while(rs.next()){
System.out.println(rs.getInt("u_id"));
}
}
显示结果
删除修改:
public static void main(String[] args){
//删除修改
String sql1 = "delete from user where u_id=?";
Object[] obj1={12};
int update1 = DBUtil.update(sql1, obj1);
System.out.println("修改的行数:"+update1);
}
删除前:
删除后:
添加修改
public static void main(String[] args){
//添加修改
String sql2 = "insert into user(u_name,u_age,u_sex,d_id) value(?,?,?,?)";
Object[] obj={"小帅",24,"男",1};
int update2 = DBUtil.update(sql2, obj);
System.out.println("修改的行数:"+update2);
}
添加前:
添加后:
修改信息
public static void main(String[] args){
//修改信息 把id为10的名字修改为“小小小”;
String sql = "update user set u_name=? where u_id=?";
Object[] obj = {"小小小",10};
int update = DBUtil.update(sql, obj);
System.out.println(update);
}