一.什么是JDBC
- 全称:Java DataBase Connectivity
- 概述:ava数据库连接技术(Java DataBase Connectivity),能实现Java程序对各种数据库的访问,由一组使用Java语言编写的类和接口(JDBC API)组成,它们位于java.sql以及javax.sql中
- JDBC访问流程
1.Class.forName() //加载驱动
2.DriverManager //获取Connection连接
3.Statement //执行SQL语句
4.返回ResultSet //查询结果
5.释放资源
二.操作实例
注意:使用JDBC时需要导入一下mysql-connector-java-5.1.38.jar包,并且在初期学习时可以导入hamcrest-core-1.3.jar以及junit-4.12.jar可以进行单元测试
- 加载驱动、获取Connertiion连接
public Connection getConn() throws Exception {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://192.168.95.100:3306/kb09";//提前创建String字符串保存mysql地址
//驱动管理器来获取连接
Connection conn= DriverManager.getConnection(url,"root","ok");//传入数据库地址、用户名、密码
return conn;
}
-
执行SQL语句
-
查询方法:executeQuery()
//传入需要查询的sql语句
public ResultSet qurry(String sql) throws Exception{
//获取连接
Connection conn=getConn();
//通过连接获取statement对象
Statement stmt=conn.createStatement();
//接收查询结果
ResultSet resultSet=stmt.executeQuery(sql);
return resultSet;
}
此时可以进行单元测试ctrl+shift+t,选择要测试的方法
public void qurry() throws Exception {
//实例化BaseDao对象
BaseDao baseDao=new BaseDao();
//调用showTables()方法
ResultSet resultSet=baseDao.qurry("select * form student");
//通过while循环输出每一行结果
while(resultSet.next()){
System.out.println(resultSet.getString(1);
}
}
还可以将获取的数据保存在java类型中
public void query() throws Exception {
BaseDao dao=new BaseDao();
String sql="select * from student where stu_id=1011";//查询student表中stu_id为1011的信息
ResultSet resultSet=dao.qurry(sql);
ArrayList<Student> list=new ArrayList<>();
while(resultSet.next()){
Student s=new Student();
s.setStu_id(resultSet.getInt("stu_id"));//获取int型的stu_id列的数据传入student对象s中的属性
s.setStu_name(resultSet.getString("sut_name"));
s.setPhone(resultSet.getString("phone"));
s.setIdentityCart(resultSet.getString("identityCard"));
s.setGender(resultSet.getString("gender"));
s.setEmail(resultSet.getString("email"));
s.setAddress(resultSet.getString("address"));
list.add(s);//将一条完成的student对象信息传入集合中
}
//遍历输出所有student对象信息
for (Student student : list) {
System.out.println(student);
}
}
- 增、改方法 :executeUpdate
public int update(String sql) throws Exception{
//获取连接
Connection connection=getConn();
Statement stmt= connection.createStatement();
//执行语句并返回被影响条数
int num=stmt.executeUpdate(sql);
return num;
}
- 操作库与表的方法:execute()
public void database(String sql)throws Exception{
//获取连接
Connection conn=getConn();
Statement statement = conn.createStatement();
statement.execute(sql);
}
- 关闭资源
//根据程序设计设定需要关闭的资源对象
public void close(Connection conn,Statement sta,ResultSet res) throws Exception {
if (conn!=null){//判断是否为空在执行关闭,否则可能存在报错
conn.close();//关闭方法
}
if (sta!=null){
sta.close();
}
if (res!=null){
res.close();
}
}