java JDBCdemo

这篇博客主要介绍了使用Java JDBC进行数据库的基本操作,包括五个表格的连接与操作,但未涉及图形界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • jdbc的简单练习并没有涉及到图形界面
    在这里插入图片描述
  • 数据库连接基本操作
package red;

import java.sql.*;

public class link {
    static {
        try {
            String driverName="com.mysql.cj.jdbc.Driver";
            Class.forName(driverName);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        Connection con=null;
        try{
            con= DriverManager.getConnection("jdbc:mysql://localhost/market"+"? serverTimezone=GMT%2B8","root","");
        }catch (Exception e){
            e.printStackTrace();
        }
        return  con;
    }
    public  static  void close(Connection con, Statement statement, PreparedStatement preparedStatement, ResultSet rs){
        try{
            if(rs!=null) rs.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            if(con!=null) con.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            if(statement!=null)statement.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            if(preparedStatement !=null) preparedStatement.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
  • 第一个表格
package red;

import java.sql.*;
import java.util.Scanner;

//超市第一个表
//create table  insert  select     delete    correct
//连接上Connection在构造方法 实例化statement
public class branchfirst {
    Connection con;
    PreparedStatement ptmt;
    Statement statement;
    ResultSet rs;
    public Statement getStatement() {
        return statement;
    }
    public Connection getCon() {
        return con;
    }
    public ResultSet getRs() {
        return rs;
    }
    public PreparedStatement getPreparedStatement() {
        return ptmt;
    }
    public branchfirst(Connection con){
        this.con=con;
        try{
            statement=con.createStatement();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public void createTable() throws SQLException{
        try {
            String sql="create table if not exists branch1(id int(10) primary KEY,operatingexpense  int(150) ,governor varchar(20),contact int(50),address varchar(100))";
            statement.executeUpdate(sql);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public void  Insert()throws SQLException{
        String sql;
        System.out.println("请输入你想要添加的信息,结束输出时请按回车结束");
        System.out.println("格式类似于:"+"\"insert into branch1 values(01,1000000,'小明',158123456789,'重庆市江北区')\"");
        do{
            Scanner scanner=new Scanner(System.in);
            sql=scanner.nextLine();
            if(!sql.equals(""))
            statement.executeUpdate(sql);
        }while(!sql.equals(""));
        //String sql5="insert into branch1 values(?,?,?,?,?)";
        //ptmt=con.prepareStatement(sql5);
        //ptmt.setInt(1,05);ptmt.setInt(2,5000000);ptmt.setString(3,"小梦");ptmt.setInt(4,156123456789);ptmt.setString(5,"重庆市江津区");
        //ptmt.executeUpdate;
//        String sql1="insert into branch1 values(01,1000000,'小红',158123456789,'重庆市南岸区')";
//        String sql2="insert into branch1 values(02,2000000,'小撒',177123456789,'重庆市巴南区')";
//        String sql3="insert into branch1 values(03,3000000,'小图',159123456789,'重庆市九龙坡区')";
//        statement.addBatch(sql1);
//        statement.addBatch(sql2);
//        statement.addBatch(sql3);
//        int[] re=statement.executeBatch();
    }
    public void Select() throws SQLException{
        String sql="select id,operatingexpense,governor,contact,address from branch1";
        rs=statement.executeQuery(sql);
        while(rs.next()){
            int id=rs.getInt("id");
            int oe=rs.getInt("operatingexpense");
            String g=rs.getString("governor");
            int c=rs.getInt("contact");
            String ad=rs.getString("address");
            System.out.println("--|"+id+"\t"+oe+"\t"+g+"\t"+c+"\t"+ad+"\t");
        }
    }
    public void Delect() throws  SQLException{
        String sql="delete from branch1 where id=?";
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入想要删除的id序号");
        int id=scanner.nextInt();
        ptmt=con.prepareStatement(sql);
        ptmt.setInt(1,id);
        ptmt.executeUpdate();
    }
    public void Correct()throws Exception{
        String sql="select id,operatingexpense,governor,contact,address from branch1 where id=?";
        ptmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        rs=ptmt.executeQuery();
        System.out.println("请输入你想要修改的id序号:");
        Scanner scanner=new Scanner(System.in);
        int id=scanner.nextInt();
        System.out.println("修改成:");
        int reid=scanner.nextInt();
        ptmt.setInt(1,id);
        rs.last();
        rs.updateInt("id",reid);
        rs.updateRow();
    }
}
  • 第二个表格
package red;

import java.sql.*;
import java.util.Scanner;
public class branchsecond {
    Connection con;
    PreparedStatement ptmt;
    Statement statement;
    ResultSet rs;

    public Statement getStatement() {
        return statement;
    }

    public Connection getCon() {
        return con;
    }

    public ResultSet getRs() {
        return rs;
    }

    public PreparedStatement getPreparedStatement() {
        return ptmt;
    }

    public branchsecond(Connection con) {
        this.con = con;
        try {
            statement = con.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void createTable() throws SQLException {
        try {
            String sql = "create table if not exists branch2(id int(10) primary KEY,personid  int(10) ,name varchar(20),age int(10),work varchar (50),contact varchar(100),address varchar(100))";
            statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void Insert() throws SQLException {
        String sql1 = "insert into branch2 values(01,2015,'小花',15,'销售员','158123456789','重庆市南岸区')";
        String sql2 = "insert into branch2 values(02,2016,'小禿',16,'销售员','177123456789','重庆市巴南区')";
        String sql3 = "insert into branch2 values(03,2017,'小图',17,'送货员','159123456789','重庆市九龙坡区')";
        statement.addBatch(sql1);
        statement.addBatch(sql2);
        statement.addBatch(sql3);
        int[] re = statement.executeBatch();
    }

    public void Select() throws SQLException {
        String sql = "select id,personid,name,age,work,contact,address from branch2";
        rs = statement.executeQuery(sql);
        while (rs.next()) {
            int id = rs.getInt("id");
            int personid = rs.getInt("personid");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String work = rs.getString("work");
            String contact = rs.getString("contact");
            String address = rs.getString("address");
            System.out.println("--|" + id + "\t" + personid + "\t" + name + "\t" + age + "\t" + work + "\t" + contact + "\t" + address + "\t");
        }
    }
    public void Delect() throws  SQLException{
        String sql="delete from branch2 where id=?";
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入想要删除的id序号");
        int id=scanner.nextInt();
        ptmt=con.prepareStatement(sql);
        ptmt.setInt(1,id);
        ptmt.executeUpdate();
    }
    public void Correct()throws Exception{
        String sql="select id,personid,name,age,work,contact,address from branch2 where id=?";
        ptmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        rs=ptmt.executeQuery();
        System.out.println("请输入你想要修改的id序号:");
        Scanner scanner=new Scanner(System.in);
        int id=scanner.nextInt();
        System.out.println("修改成:");
        int reid=scanner.nextInt();
        ptmt.setInt(1,id);
        rs.last();
        rs.updateInt("id",reid);
        rs.updateRow();
    }
}
  • 第三个表格
package red;

import java.sql.*;
import java.util.Scanner;

public class branchthird {
    Connection con;
    PreparedStatement ptmt;
    Statement statement;
    ResultSet rs;
    public Statement getStatement() {
        return statement;
    }
    public Connection getCon() {
        return con;
    }
    public ResultSet getRs() {
        return rs;
    }
    public PreparedStatement getPreparedStatement() {
        return ptmt;
    }
    public branchthird(Connection con){
        this.con=con;
        try{
            statement=con.createStatement();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public void createTable() throws SQLException {
        try {
            String sql = "create table if not exists branch3(id int(10) primary KEY,productid  int(10) ,productname varchar(40),purchasecost float,price float )";
            statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void Insert() throws SQLException {
        String sql1 = "insert into branch3 values(01,112,'薯片',1.5,5.0)";
        String sql2 = "insert into branch3 values(02,221,'可乐',0.5,3.0)";
        String sql3 = "insert into branch3 values(03,213,'维维豆奶',5.0,19.5)";
        statement.addBatch(sql1);
        statement.addBatch(sql2);
        statement.addBatch(sql3);
        int[] re = statement.executeBatch();
    }
    public void Select() throws SQLException {
        String sql = "select id,productid,productname,purchasecost,price from branch3";
        rs = statement.executeQuery(sql);
        while (rs.next()) {
            int id = rs.getInt("id");
            int productid = rs.getInt("productid");
            String productname = rs.getString("productname");
            float purchasecost=rs.getFloat("purchasecost");
            float price=rs.getFloat("price");
            System.out.println("--|" + id + "\t" + productid + "\t" + productname + "\t" + purchasecost + "\t" + price);
        }
    }
    public void Delect() throws  SQLException{
        String sql="delete from branch3 where id=?";
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入想要删除的id序号");
        int id=scanner.nextInt();
        ptmt=con.prepareStatement(sql);
        ptmt.setInt(1,id);
        ptmt.executeUpdate();
    }
    public void Correct()throws Exception{
        String sql="select id,productid,productname,purchasecost,price from branch3 where id=?";
        ptmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        rs=ptmt.executeQuery();
        System.out.println("请输入你想要修改的id序号:");
        Scanner scanner=new Scanner(System.in);
        int id=scanner.nextInt();
        System.out.println("修改成:");
        int reid=scanner.nextInt();
        ptmt.setInt(1,id);
        rs.last();
        rs.updateInt("id",reid);
        rs.updateRow();
    }
}
  • 第四个表格
package red;

import java.sql.*;
import java.util.Scanner;

public class productfirst {
    Connection con;
    PreparedStatement ptmt;
    Statement statement;
    ResultSet rs;

    public Statement getStatement() {
        return statement;
    }

    public Connection getCon() {
        return con;
    }

    public ResultSet getRs() {
        return rs;
    }

    public PreparedStatement getPreparedStatement() {
        return ptmt;
    }

    public productfirst(Connection con) {
        this.con = con;
        try {
            statement = con.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void createTable() throws SQLException {
        try {
            String sql = "create table if not exists product1(productid int(10) primary KEY,purchasename  varchar (40) ,contact varchar(100),address varchar(100))";
            statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void Insert() throws SQLException {
        String sql1 = "insert into product1 values(01,'张三哥','158123456789','重庆市南岸区')";
        String sql2 = "insert into product1 values(02,'李四哥','177123456789','重庆市巴南区')";
        String sql3 = "insert into product1 values(03,'仓仓子','159123456789','重庆市九龙坡区')";
        statement.addBatch(sql1);
        statement.addBatch(sql2);
        statement.addBatch(sql3);
        int[] re = statement.executeBatch();
    }
    public void Select() throws SQLException {
        String sql = "select productid,purchasename,contact,address from product1";
        rs = statement.executeQuery(sql);
        while (rs.next()) {
            int productid = rs.getInt("productid");
            String purchasename = rs.getString("purchasename");
            String contact = rs.getString("contact");
            String address = rs.getString("address");
            System.out.println("--|" + productid + "\t" + purchasename +"\t" + contact + "\t" + address + "\t");
        }
    }
    public void Delect() throws  SQLException{
        String sql="delete from product1 where productid=?";
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入想要删除的id序号");
        int id=scanner.nextInt();
        ptmt=con.prepareStatement(sql);
        ptmt.setInt(1,id);
        ptmt.executeUpdate();
    }
    public void Correct()throws Exception{
        String sql="select productid,purchasename,contact,address from product1 where productid=?";
        ptmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        rs=ptmt.executeQuery();
        System.out.println("请输入你想要修改的productid序号:");
        Scanner scanner=new Scanner(System.in);
        int id=scanner.nextInt();
        System.out.println("修改成:");
        int reid=scanner.nextInt();
        ptmt.setInt(1,id);
        rs.last();
        rs.updateInt("id",reid);
        rs.updateRow();
    }

}
  • 第五个表格
package red;

        import java.sql.*;
        import java.util.Scanner;
public class branchsecond {
    Connection con;
    PreparedStatement ptmt;
    Statement statement;
    ResultSet rs;

    public Statement getStatement() {
        return statement;
    }

    public Connection getCon() {
        return con;
    }

    public ResultSet getRs() {
        return rs;
    }

    public PreparedStatement getPreparedStatement() {
        return ptmt;
    }

    public branchsecond(Connection con) {
        this.con = con;
        try {
            statement = con.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void createTable() throws SQLException {
        try {
            String sql = "create table if not exists branch2(id int(10) primary KEY,personid  int(10) ,name varchar(20),age int(10),work varchar (50),contact varchar(100),address varchar(100))";
            statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void Insert() throws SQLException {
        String sql1 = "insert into branch2 values(01,2015,'小花',15,'销售员','158123456789','重庆市南岸区')";
        String sql2 = "insert into branch2 values(02,2016,'小禿',16,'销售员','177123456789','重庆市巴南区')";
        String sql3 = "insert into branch2 values(03,2017,'小图',17,'送货员','159123456789','重庆市九龙坡区')";
        statement.addBatch(sql1);
        statement.addBatch(sql2);
        statement.addBatch(sql3);
        int[] re = statement.executeBatch();
    }

    public void Select() throws SQLException {
        String sql = "select id,personid,name,age,work,contact,address from branch2";
        rs = statement.executeQuery(sql);
        while (rs.next()) {
            int id = rs.getInt("id");
            int personid = rs.getInt("personid");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String work = rs.getString("work");
            String contact = rs.getString("contact");
            String address = rs.getString("address");
            System.out.println("--|" + id + "\t" + personid + "\t" + name + "\t" + age + "\t" + work + "\t" + contact + "\t" + address + "\t");
        }
    }
    public void Delect() throws  SQLException{
        String sql="delete from branch2 where id=?";
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入想要删除的id序号");
        int id=scanner.nextInt();
        ptmt=con.prepareStatement(sql);
        ptmt.setInt(1,id);
        ptmt.executeUpdate();
    }
    public void Correct()throws Exception{
        String sql="select id,personid,name,age,work,contact,address from branch2 where id=?";
        ptmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        rs=ptmt.executeQuery();
        System.out.println("请输入你想要修改的id序号:");
        Scanner scanner=new Scanner(System.in);
        int id=scanner.nextInt();
        System.out.println("修改成:");
        int reid=scanner.nextInt();
        ptmt.setInt(1,id);
        rs.last();
        rs.updateInt("id",reid);
        rs.updateRow();
    }
}
  • 主函数
package red;

import java.sql.Connection;
import java.util.Scanner;

public class level2 {
    public static void main(String[] args) {
        Connection con = link.getConnection();
        branchfirst bf1 = new branchfirst(con);
        branchsecond bf2 = new branchsecond(con);
        branchthird bf3 = new branchthird(con);
        productfirst prd1 = new productfirst(con);
        productsecond prd2 = new productsecond(con);
        try {
            bf1.createTable();
            bf2.createTable();
            bf3.createTable();
            prd1.createTable();
            prd2.createTable();
            bf1.Select();
            bf2.Select();
            bf3.Select();
            prd1.Select();
            prd1.Select();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            link.close(bf1.getCon(), bf1.getStatement(), bf1.getPreparedStatement(), bf1.getRs());
            link.close(bf2.getCon(), bf2.getStatement(), bf2.getPreparedStatement(), bf2.getRs());
            link.close(bf3.getCon(), bf3.getStatement(), bf3.getPreparedStatement(), bf3.getRs());
            link.close(prd1.getCon(), prd1.getStatement(), prd1.getPreparedStatement(), prd1.getRs());
            link.close(prd2.getCon(), prd2.getStatement(), prd2.getPreparedStatement(), prd2.getRs());
        }
    }
}
### Java JDBC 示例代码 #### 建立数据库连接 为了使用JDBC操作数据库,首先需要建立到目标数据库的连接。这通常通过`DriverManager.getConnection()`方法完成。 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JdbcConnectionExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb"; // 数据库URL String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { System.out.println("Connected to the database!"); } catch (SQLException e) { System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage()); } } } ``` 这段代码展示了如何利用MySQL作为示例来获取一个数据库连接[^1]。 #### 执行查询并处理结果集 一旦建立了连接,就可以执行SQL命令并与返回的数据交互。 ```java import java.sql.*; public class QueryExecutionExample { private static final String QUERY = "SELECT id, name FROM users"; public static void main(String[] args) throws SQLException { Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testdb", "root", "password" ); stmt = con.createStatement(); rs = stmt.executeQuery(QUERY); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.print("ID: " + id); System.out.println(", Name: " + name); } } finally { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (con != null) con.close(); } } } ``` 此部分说明了怎样发送一条简单的SQL SELECT语句给服务器,并遍历得到的结果集合[^2]。 #### 使用PreparedStatement防止SQL注入攻击 对于带有参数化的查询来说,推荐采用`PreparedStatement`对象代替普通的`Statement`,因为前者能有效防范SQL注入风险。 ```java String sql = "INSERT INTO Users(name, age) VALUES (?, ?)"; try (PreparedStatement pstmt = connection.prepareStatement(sql)) { pstmt.setString(1, "John Doe"); pstmt.setInt(2, 30); int affectedRows = pstmt.executeUpdate(); } catch (SQLException ex) { Logger.getLogger(UserDAO.class.getName()).log(Level.SEVERE, null, ex); } ``` 这里给出了向表中插入新记录的例子,同时也体现了预编译语句的安全性和效率优势[^3]。 #### 处理事务管理 当涉及到多个相互依赖的操作时,应该启用事务支持以确保数据的一致性。 ```java connection.setAutoCommit(false); // 开始事务 try { // 进行业务逻辑... connection.commit(); // 提交更改 } catch (Exception e) { connection.rollback(); // 发生异常则回滚 } finally { connection.setAutoCommit(true); // 结束事务 } ``` 上述片段解释了如何控制自动提交模式以及何时调用commit()或rollback()[^4]。 #### 封装常用功能至工具类 考虑到重复性的任务如打开/关闭连接、准备声明等都可以被抽象出来形成公共的方法,在实际项目里往往会有专门负责这些工作的辅助类存在。 ```java public class DBUtil { private static final String DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver"; private static final String CONNECTION_URL = "jdbc:mysql://localhost:3306/testdb"; private static final String USERNAME = "root"; private static final String PASSWORD = "password"; static { try { Class.forName(DRIVER_CLASS_NAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD); } public static void close(Connection... connections) { for (Connection c : connections) { if (c != null && !c.isClosed()) { try { c.close(); } catch (SQLException ignored) {} } } } } ``` 该段落描述了一个简化版的实用程序类,它可以帮助减少样板代码的数量同时提高可维护性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值