先简单介绍一下jdbc的七大步骤,依次为加载数据库驱动、连接数据库、定义操作的sql语句,创建数据库对象,执行数据库操作,操作结果集,释放资源 (关闭结果集->关闭数据库对象->断开连接)。
下面先说一说每一个步骤要做的内容:
1)加载数据库驱动
加载数据库驱动是通过一个jar包,包的名称为mysql-connector-java-5.1.36.jar,调用里面的一个forName方法,代码如下:
Class.forName("com.mysql.jdbc.Driver");
2)连接数据库
连接数据库也是通过调用jar包里面的方法来实现,代码如下:
Connection connection= DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=caiyuan");
值得注意的是,这里的jdbc是我数据库的名字,root是登录账户,caiyuan是密码,每个人的都不一样。使用的数据库在上篇文章里有讲述。
3)定义操作的sql语句
定义sql语句就看情况来定义了,在需要对数据库进行操作的时候就定义相对应的语句,例如查询整个数据库:
String sql="select * from tb1_users";
4)创建数据库对象
创建数据库对象可以在定义sql语句前进行,也可以在定义sql语句后进行,也是拿查询整个数据库来看:
先定义sql语句:
String sql="select * from tb1_users"; PreparedStatement statement =connection.prepareStatement(sql);
先创建数据库对象:
PreparedStatement statement=null; String sql="select * from tb1_users"; statement =connection.prepareStatement(sql);
5)执行数据库操作
如果不需要返回结果,可以直接操作,statement.executeQuery();
但是如果还要返回结果,就需要定义一个结果集了,然后再进行操作,ResultSet resultSet=statement.executeQuery();
6)操作结果集
在第五步的基础上对结果集进行操作,如果不返回结果,则不需要对结果集进行操作,否则需要一定的操作。比如查询整个数据库,这里我只做了一张简单的用户表。
while (resultSet.next()){ System.out.println(resultSet.getInt(1)); System.out.println(resultSet.getString(2)); System.out.println(resultSet.getString(3)); }
这里就是对结果集进行遍历输出。
7)释放资源
每一次对数据库操作完成之后都要释放资源,如果有返回结果需要结果集的,需要先关闭结果集,然后关闭数据库对象,最后断开数据库连接;如果没有返回结果不需要结果集的,就只需要先关闭数据库对象,然后断开数据库连接就可以了。
下面我将附带上我这次实践运行成功的代码:
1)数据库连接和释放
package com.util; import java.sql.*; public class DButil { public static Connection getconnect() { Connection connection=null; try { Class.forName("com.mysql.jdbc.Driver"); connection= DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=caiyuan"); // System.out.println("创建连接成功"); } catch (Exception e) { e.printStackTrace(); } return connection; } public static void closeConn(Connection connection, PreparedStatement statement, ResultSet resultSet) { if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if(statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if(connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } // System.out.println("关闭成功"); } }
2)数据库简单的增删改查操作
package com.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner; public class user_util { //查询整个数据库 public static void getselect() { Connection connection=DButil.getconnect(); PreparedStatement statement=null; ResultSet resultSet=null; String sql="select * from tb1_users"; try { statement =connection.prepareStatement(sql); resultSet=statement.executeQuery(); while (resultSet.next()){ System.out.println(resultSet.getInt(1)); System.out.println(resultSet.getString(2)); System.out.println(resultSet.getString(3)); } } catch (SQLException e) { e.printStackTrace(); }finally { DButil.closeConn(connection,statement,resultSet); } } //根据用户名查询数据库并且返回密码,用作登录 public static String getSelect(String name) { Connection connection=DButil.getconnect(); PreparedStatement statement=null; ResultSet resultSet=null; String sql="select * from tb1_users where userName=?"; try { statement =connection.prepareStatement(sql); statement.setString(1,name); resultSet=statement.executeQuery(); // int Id=resultSet.getInt(1); // String Name=resultSet.getString(2); while (resultSet.next()) { String Password = resultSet.getString(3); return Password; } } catch (SQLException e) { e.printStackTrace(); return null; }finally { DButil.closeConn(connection,statement,resultSet); } return null; } //插入数据 public static void getInsert() { Scanner sc = new Scanner(System.in); Connection connection=DButil.getconnect(); PreparedStatement statement=null; ResultSet resultSet=null; String sql="insert into tb1_users(userName,passWord) value(?,?)"; try { statement=connection.prepareStatement(sql); System.out.println("请输入要添加的用户名"); String name=sc.nextLine(); System.out.println("请输入密码"); String password=sc.nextLine(); statement.setString(1,name); statement.setString(2,password); statement.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { DButil.closeConn(connection,statement,resultSet); } } //删除数据 public static void getDelate() { Scanner sc = new Scanner(System.in); Connection connection=DButil.getconnect(); PreparedStatement statement=null; ResultSet resultSet=null; String sql="delete from tb1_users where id=?"; try { statement=connection.prepareStatement(sql); System.out.println("请输入要删除的用户的ID"); int id=sc.nextInt(); statement.setInt(1,id); statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally { DButil.closeConn(connection,statement,resultSet); } } //修改数据 public static void getUpdate() { Scanner sc = new Scanner(System.in); Connection connection=DButil.getconnect(); PreparedStatement statement=null; ResultSet resultSet=null; String sql="update tb1_users set userName=?,passWord=? where id=?"; try { statement=connection.prepareStatement(sql); System.out.println("请输入要修改的用户的ID"); int id=sc.nextInt(); System.out.println("请输入要修改之后的用户名"); String name=sc.next(); System.out.println("请输入密码"); String password=sc.next(); statement.setString(1,name); statement.setString(2,password); statement.setInt(3,id); statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally { DButil.closeConn(connection,statement,resultSet); } } }
3)实现函数
实现的话只需要创建一个新的类写一个main函数调用这些方法就可以了,也确实比较简单,就不在这里给出代码了。