使用JDBC完成一个简单的todolist数据库管理
使用JDBC完成一个简单的todolist数据库管理
目标:使用JDBC完成对todolist数据库的管理
todolist数据库
|id|title|is_completed|
create database todolist;use todolist;create table `task`(`id` int not null primary key auto_increment,`title` varchar(100) not null,`is_completed` int not null);
前期准备
从MYSQL官网中下载了mysql-connect的jar包
https://downloads.mysql.com/archives/c-j/
在Operating System中选择Platform Independent,选择第二行的ZIP Archive下载即可
解压后得到可以得到jar包
法一:
在idea里面选择项目结构,点击加号,选择下载好的jar包导入即可
法二:
另外一种方式可以直接在项目的根目录下创建一个lib文件夹,然后将jar包放进去,再右键把lib文件夹标记成库即可
代码:
- 先加载驱动程序
try { Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) { e.printStackTrace();}
- 连接数据库todolist
Connection connection = null;try { connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/todolist", "root", "root");} catch (SQLException e) { e.printStackTrace();}
select:
- 按照教程,定义一个SQL语句
String sql = "select * from task";
- 定义PreparedStatement用于执行SQL语句
PreparedStatement preparedStatement = conn.prepareStatement(sql);
- 使用ResultSet接收select得到的结果
ResultSet resultSet = preparedStatement.executeQuery();
- 遍历所有的元组,将每个元组输出
while (resultSet.next()) { System.out.println("id:"+resultSet.getString("id")+"\ttitle:"+resultSet.getString("title")+ "\tis_completed:"+resultSet.getString("is_completed"));}
update:
流程和select一样,但是不需要用ResultSet接收结果,并且使用preparedStatement.executeUpdata来执行SQL
public void update(Connection connection) throws SQLException { String id = null; String title = null; String isCompleted = null; try{ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("要修改的任务id"); id = bufferedReader.readLine(); System.out.println("新的title"); title = bufferedReader.readLine(); System.out.println("新的is_completed"); isCompleted = bufferedReader.readLine(); }catch(IOException e){ e.printStackTrace(); } String sql = "update task set `title` = ?,`is_completed`= ? where id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, title); preparedStatement.setInt(2, Integer.parseInt(isCompleted)); preparedStatement.setInt(3, Integer.parseInt(id)); int flag = preparedStatement.executeUpdate(); if (flag == 1) { System.out.println("更新成功"); } else { System.out.println("更新失败"); } try {// 释放preparedStatement if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace();}}
delete:类似update
public void delete(Connection connection) throws SQLException { String id = null; try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("id"); id = bufferedReader.readLine(); }catch (IOException e){ e.printStackTrace(); } String sql = "delete from task where `id` = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,id); int flag = preparedStatement.executeUpdate(); if(flag == 1){ System.out.println("删除成功"); } else { System.out.println("删除失败"); } try {// 释放preparedStatement if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace();}}
insert:
public void insert(Connection connection) throws SQLException { try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("title"); title = bufferedReader.readLine(); System.out.println("is_completed"); isCompleted = bufferedReader.readLine(); }catch (IOException e){ e.printStackTrace(); } String sql = "insert into task(`title`,`is_completed`) values(?,?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,title); preparedStatement.setInt(2,Integer.valueOf(isCompleted)); int flag = preparedStatement.executeUpdate(); if(flag == 1){ System.out.println("添加成功"); } else { System.out.println("添加失败"); } try {// 释放preparedStatement if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace();}}
close:
在结束后将连接关闭
try { if(connection != null) { connection.close(); }} catch (SQLException e) { e.printStackTrace();}try { if(preparedStatement != null) { preparedStatement.close(); }} catch (SQLException e) { e.printStackTrace();}try { if(resultSet != null) { resultSet.close(); }} catch (SQLException e) { e.printStackTrace();}
完整代码
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.sql.*;import java.util.Scanner;/ * @author wbl */public class Todolist { public void select(Connection connection) throws SQLException { System.out.println("todolist"); String sql = "select * from task"; PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { System.out.println("id:"+resultSet.getString("id")+"\ttitle:"+resultSet.getString("title")+ "\tis_completed:"+resultSet.getString("is_completed")); } try { if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(resultSet != null) { resultSet.close(); } } catch (SQLException e) { e.printStackTrace(); } } public void insert(Connection connection) throws SQLException { String title = null, isCompleted = null; try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("title"); title = bufferedReader.readLine(); System.out.println("is_completed"); isCompleted = bufferedReader.readLine(); }catch (IOException e){ e.printStackTrace(); } String sql = "insert into task(`title`,`is_completed`) values(?,?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,title); preparedStatement.setInt(2,Integer.valueOf(isCompleted)); int flag = preparedStatement.executeUpdate(); if(flag == 1){ System.out.println("添加成功"); } else { System.out.println("添加失败"); } try {// 释放preparedStatement if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace(); } } public void delete(Connection connection) throws SQLException { String id = null; try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("id"); id = bufferedReader.readLine(); }catch (IOException e){ e.printStackTrace(); } String sql = "delete from task where `id` = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,id); int flag = preparedStatement.executeUpdate(); if(flag == 1){ System.out.println("删除成功"); } else { System.out.println("删除失败"); } try {// 释放preparedStatement if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace(); } } public void update(Connection connection) throws SQLException { String id = null; String title = null; String isCompleted = null; try{ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("要修改的任务id"); id = bufferedReader.readLine(); System.out.println("新的title"); title = bufferedReader.readLine(); System.out.println("新的is_completed"); isCompleted = bufferedReader.readLine(); }catch(IOException e){ e.printStackTrace(); } String sql = "update task set `title` = ?,`is_completed`= ? where id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, title); preparedStatement.setInt(2, Integer.parseInt(isCompleted)); preparedStatement.setInt(3, Integer.parseInt(id)); int flag = preparedStatement.executeUpdate(); if (flag == 1) { System.out.println("更新成功"); } else { System.out.println("更新失败"); } try {// 释放preparedStatement if(preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { e.printStackTrace(); } } public Connection prepareJDBC(){ try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection connection = null; try { connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/todolist", "root", "mysql"); } catch (SQLException e) { e.printStackTrace(); } return connection; } public static void main(String[] args) throws SQLException { Scanner scanner = new Scanner(System.in); System.out.println("Welcome to Todolist"); System.out.println("0:退出"); System.out.println("1:查询列表"); System.out.println("2:新增表项"); System.out.println("3:更新表项"); System.out.println("4:删除表项"); Todolist todolist = new Todolist(); Connection connection = todolist.prepareJDBC(); while (true){ int i = scanner.nextInt(); switch (i){ case 0: { try {// 关闭连接 if(connection != null) {connection.close(); } } catch (SQLException e) { e.printStackTrace(); } return; } case 1:todolist.select(connection);break; case 2:todolist.insert(connection);break; case 3:todolist.update(connection);break; case 4:todolist.delete(connection);break; default:break; } } }}