try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (Exception e2) {
// TODO: handle exception
}finally {
}
}
}
}
}
[](()4.执行DQL(Query)操作
===================================================================================
[](()ResultSet:执行DML操作和执行DDL操作是一样,只有sql语句发生了变量
[](()常用方法:
[](()# boolean next():判断是否有下一行数据,若有,则向下移动一行指针.
[](()# getXxx(String columnName):获取当前行中的,指定列名的列的值.columnName是列名/列的别名
[](()# 若列的类型是VARCHAR/CHAR/TEXT,都使用getString来获取列的值.
[](()# 若列的类型是int/integer/–>getInt来获取列的值.
[](()执行sql:
[](()# executeQuery(Sql)会得到一个结果集,(多行数据)
//查询所有*,获得结果集
void test1() throws Exception{
//1.获取连接对象
String url = “jdbc:mysql://localhost:3306/jdbc”;
String user = “root”;
String password = “123456”;
//2.加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
//3.连接数据库
Connection conn = DriverManager.getConnection(url,user,password);
//4.编写sql语句
String sql = “SELECT * FROM stu”;
Statement st = conn.createStatement();
//5.执行sql语句,返回结果存于结果集
ResultSet res = st.executeQuery(sql);
//6.打印结果
while(res.next()) {
System.out.println(“id:”+res.getInt(“id”)+“-----”+“name:”+res.getString(“name”));
}
//7.释放资源
st.close();
conn.close();
}
[](()# 获了一个数据
//获取一个数据
static void test2() throws Exception{
//1.获取连接对象
String url = “jdbc:mysql://localhost:3306/jdbc”;
String user = “root”;
String password = “123456”;
//2.加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
//3.连接数据库
Connection conn = DriverManager.getConnection(url,user,password);
//4.编写sql语句
String sql = “SELECT * FROM stu where name= ‘zs’”;
Statement st = conn.createStatement();
//5.执行sql语句,返回结果存于结果集
ResultSet res = st.executeQuery(sql);
//6.打印结果
if(res.next()) {
System.out.println(“id:”+res.getInt(“id”)+“-----”+“name:”+res.getString(“name”));
}
//7.释放资源
st.close();
conn.close();
}
[](()5.DAO思想养成计划
==============================================================================
[](()什么是DAO?看图
[](()为什么要使用DAO
Data Access Object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
[](()不使用DAO的话?
多个地方都要都同时做CRUD操作时,重复的代码就会很多,如图所示
[](()接下来就是怎么做的问题了,设计规范
别找了,上图就是粉图
[](()没有实际操作演示下总觉得不行,好,开干起来
根据粉图,创建相应的包和类,,如图所示
domian包中的Student类就是一个domain类,(什么是domain类?封装成getter和setter的就是)
package com.study.jdbc.domain;
public class Student {
String name;
Integer id;
Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
而dao包下的Istudent是一个接口(这也是面向接口编程的思想)
package com.study.jdbc.dao;
import java.util.List;
import com.study.jdbc.domain.Student;
public interface IStudent {
/**
- 保存一个学生
*/
public void save(Student stu);
/**
- 删除学生
*/
public void delete(int id);
/**
- 更新一个学生信息
*/
public void update(int id,Student stu);
/**
- 获取指定学生
*/
public Student get(int id);
/**
- 获取所有的学生
*/
public List getAll();
}
也许看到这里,你就明白了,StudentImpl是Istudent的一个实例,用来实现接口的具体方法,而StudentTest则是用来做单元测试的,测试某个方法是否准确无误。
没错,可以看下
StudentImpl
package com.study.jdbc.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;
import com.study.jdbc.dao.IStudent;
import com.study.jdbc.domain.Student;
public class StudentImpl implements IStudent{
@Override
public void save(Student stu) throws Exception {
//1.获取连接对象
String url = “jdbc:mysql://localhost:3306/jdbc”;
String user = “root”;
String password = “123456”;
//2.加载驱动
Class.for 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 Name(“com.mysql.jdbc.Driver”);
//3.连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
@Override
public void delete(int id) {
// TODO Auto-generated method stub
}
@Override
public void update(int id, Student stu) {
// TODO Auto-generated method stub
}
@Override
public Student get(int id) {
// TODO Auto-generated method stub
return null;
}
@Override
public List getAll() {
// TODO Auto-generated method stub
return null;
}
}