用JDBC 实现数据库的连接
工具:IDEA 2018.2.2 mysql5.5 SQLyog
- 用idea新建一个项目
- 后续一直点next,最后点击完成。建好java文件后,在src目录下新建一个包dbo,在dbo包中新建一个Test类。
- 在实现JDBC连接前,先建立好数据库,在SQLyog中建立新的数据库。如图
- 在建立好的数据库中创建新的表,我们在这里只建立简单的数据表。编辑好后,点击确定
- 建立好数据库后,转到idea,JDBC全称为Java DataBase Connectivity 是实现数据库连接的接口。
- 整个JDBC的连接分为7步。
- 1 加载驱动。到mysql官网中下载mysql驱动 ,我这里是mysql5.5,所以下载老版本的驱动。
将下载好的驱动解压,然后在java文件中新建文件lib中,然后将解压好的驱动添加到lib文件夹中。
将添加的
- 2 创建连接
//2创建连接
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test8?useSSL=true&characterEncoding=utf-8&user=root&password=1234");
- 3 写sql语句
//3.写sql
String sql = "select * from user ";
- 4 得到statement对象
//4.得到statement对象
st = connection.prepareStatement(sql);
- 5 执行sql
//5.执行sql
rs = statement.executeQuery();
- 6 处理结果集
//6处理结果集
while (resultSet.next()){
System.out.print(" id: "+resultSet.getInt(1));
System.out.print("name: "+resultSet.getString(2));
System.out.print(" password: "+resultSet.getString(3));
System.out.println("-----------");
}
- 7 关闭资源
//7关闭资源
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
- 整个代码:
package dbo;
import java.sql.*;
public class DB {
public static void main(String[] args) {
ResultSet rs=null;
PreparedStatement st=null;
Connection con=null;
try {
//1加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2创建连接
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test8?useSSL=true&characterEncoding=utf-8&user=root&password=1234");
//3.写sql
String sql="select * from username";
//4.得到statement对象
st = con.prepareStatement(sql);
//5.执行sql
rs = st.executeQuery();
//6处理结果集
while (rs.next()){
System.out.print(" id: "+resultSet.getInt(1));
System.out.print(" name: "+resultSet.getString(2));
System.out.print(" password: "+resultSet.getString(3));
System.out.println("--------");
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//7关闭资源
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
简单的增删查改实现
将数据库的连接和关闭封装
- 新建一个包,里面建一个类,对应的数据库的数据。
- 在包中声明数据库对应的变量。
private int id;
private String name;
private String password;
- 在类中自动生成几个变量的获取和设置方法
右键,选择 Generate——>getter and setter——>把三个变量都选择,点击 OK,就可以自动生成了。
public int getid(){
return id;
}
public String getname(){
return name;
}
public String getpassword(){
return password;
}
public void setid(int id){
this.id=id;
}
public void setname(String name){
this.id=id;
}
public void setpassword(String password){
this.id=id;
}
- 再通过自动生成构造方法
右键,选择 Generate——>Constructor,剩下的步骤同上面一样。
public Userinfo(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
- 生成tostring语句。
步骤同上面一样,选择tostring()。
@Override
public String toString() {
return "Userinfo{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
- 新建一个类,将数据库的连接和断开都封装进去。
- 新建一个方法实现数据库的连接(将前面的数据库的连接代码转到方法 getConnection 中)
public static Connection getConnection(){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test1?useSSL=true&characterEncoding=utf-8&user=root&password=1234");
return con;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
- 新建一个方法实现数据库的关闭(将数据库的关闭代码转到方法 closeDB 中)
public static void closeDB(Connection con,PreparedStatement st,ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- 实现数据的查询
- 新建一个简单的查询方法,显示出所有数据
public class jdbc {
public List<Userinfo> find() {
List<Userinfo> list =new ArrayList<>();
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con= dbl.getConnection();
String sql = "select * from user ";
st = con.prepareStatement(sql);
rs = st.executeQuery();
while (rs.next()) {
int id=rs.getInt(1);
String name=rs.getString(2);
String password=rs.getString(3);
Userinfo userinfo=new Userinfo(id,name,password);
userinfo.setid(id);
list.add(userinfo);
}
System.out.println(list.toString());
} catch (Exception e) {
e.printStackTrace();
//System.out.println("数据库连接失败" + e.getMessage());
} finally {
dbl.closeDB(con,st,rs);
}
return list;
}
- 实现数据的更新
- 新建一个方法,实现数据库的更新
public static void update(){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con= dbl.getConnection();
String sql = "update user set name ='FFFF' where id='1' ";
st = con.prepareStatement(sql);
st.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
//System.out.println("数据库连接失败" + e.getMessage());
} finally {
dbl.closeDB(con,st,rs);
}
}
- 实现数据的删除
- 新建一个方法,实现数据库的更新
public static void update(){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con= dbl.getConnection();
String sql = "update user set name ='FFFF' where id='1' ";
st = con.prepareStatement(sql);
st.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
//System.out.println("数据库连接失败" + e.getMessage());
} finally {
dbl.closeDB(con,st,rs);
}
}
- 实现数据库的增加
- 新建一个增加方法,实现数据库的增加
public static void insert(){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con= dbl.getConnection();
String sql = "insert into user values (4,'小明','8757')";
st = con.prepareStatement(sql);
st.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
//System.out.println("数据库连接失败" + e.getMessage());
} finally {
dbl.closeDB(con,st,rs);
}
}