一、JDBC
1.1 JDBC
JDBC:(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
1.2 数据的传递
简单地来说,后端可以分为控制层(controller)、业务层(service)、持久层(Dao)。而数据库通俗的来讲就是增删查改等功能。其中,增、删、改可以归为一类讲,查询单为一类讲。
1.3分层开发
1.3 增、删、改
在用户进行前端的增、删、改基本功能时,数据时从前端而来,通过controller层、service层、Dao层,然后把数据增加、删除、修改到数据库。进行查询时,与增删改相反,数据从数据库而来,通过后端一层一层的递进,到了前端显示出来。
1.4 查
在数据库与后端连接的过程可以称为JDBC的过程。拿查询来说,数据从数据库到Dao层为建立连接的过程,一共分为六个步骤。从Dao层到service层,直接return,从service到controller也是return的过程。然后再把数据送到前端显示出来。
二、六大步骤:
2.1 装载驱动程序
2.2 建立连接
2.3 操作数据:(1)创建语句
(2)执行语句
(3)处理结果
2.4 释放资源
注意:装载驱动的过程中,要注意有没有装载上。装载成功之后会出现如下图(小奶瓶的标记):
(增、删、改)代码如下:
package com.jdbc;
/*
* JDBC 的连接步骤
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Connection01 {
public static void main(String[] args) {
// add();
// update() ;
delete();
}
//添加
public static void add() {
try {
//1
Class.forName("com.mysql.jdbc.Driver");
//2
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2","root","root");
//34
String sql = "insert into empe(ename,pas) values(?,?)";
//4
PreparedStatement pst = conn.prepareStatement(sql);
//
pst.setString(1,"很好");
pst.setInt(2, 3);
int a = pst.executeUpdate();
//5
if(a>0) {
System.out.println("添加成功");
}
//6
pst.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//修改
public static void update() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2","root","root");
String sql1 = "update empe set ename=? where pas = ? ";
PreparedStatement pst1 = conn1.prepareStatement(sql1);
pst1.setString(1,"静安寺");
pst1.setInt(2,3);
int a1 = pst1.executeUpdate();
if(a1>0) {
System.out.println("修改成功");
}
pst1.close();
conn1.close();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
//删除
public static void delete() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn2 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2","root","root");
String sql2 = "delete from empe where pas=? ";
PreparedStatement pst2 = conn2.prepareStatement(sql2);
pst2.setInt(1,3);
int a2 = pst2.executeUpdate();
if(a2>0) {
System.out.println("删除成功");
}
pst2.close();
conn2.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(查询)代码如下(分为单查询与多查询):
单查询:
package com.jdbc;
/*
* 单表查询
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Select01 {
public static void main(String[] args) {
select() ;
}
public static void select() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2","root","root");
String sql4 = "select * from empe where eid=?";
PreparedStatement pst = conn1.prepareStatement(sql4);
pst.setInt(1, 3);
ResultSet rs = pst.executeQuery();
while(rs.next()) {
int eid = rs.getInt("eid");
String ename = rs.getString("ename");
String pas = rs.getString("pas");
System.out.println(eid+" "+ename+" "+pas);
}
rs.close();
pst.close();
conn1.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
多查询:
package com.jdbc;
/*
* 多表查询
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Select10 {
public static void main(String[] args) {
select10();
}
public static void select10() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2","root","root");
String sql = "select * from empe ";
PreparedStatement pst= conn1.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while(rs.next()) {
int a= rs.getInt("eid");
String a1 = rs.getString("ename");
String a2 = rs.getString("pas");
System.out.println(a+" "+a1+" "+a2);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}