JDBC实现简单的增删改查(Statement)

目录

一、导入对应的jar包

二、注册JDBC驱动程序

三、数据库url配置

四、创建连接对象

五、创建Statement对象

1、execute(String SQL)

2、executeUpdate(String SQL)

3、executeQuery(String SQL)

六、CRUD操作

1、查询

2、新增

3、删除

4、更新

七、关闭数据库连接

八、注意

九、总代码


一、导入对应的jar包

需要包含包含数据库编程所需的JDBC类的包。

idea手动导入jar包的步骤

二、注册JDBC驱动程序

初始化驱动程序,以便可以打开与数据库的通信通道。

// mysql 8.0 以后语法
Class.forName ("com.mysql.cj.jdbc.Driver");


// mysql 8.0 之前语法
Class.forName ("com.mysql.jdbc.Driver");

三、数据库url配置

初始化驱动程序,以便可以打开与数据库的通信通道。

//数据库用户名
String userName = "root";

//数据库密码
String passWord = "123456";


// mysql8以后要设置时区 serverTimezone=UTC
// localhost----------主机名
// 3306 --------- 数据库端口号
// mytest ----------- 要连接的数据库名
String url = "jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC";

四、创建连接对象

最后,调用DriverManager对象的getConnection()方法来建立实际的数据库连接。

//获得连接
Connection connection = DriverManager.getConnection (url, userName, passWord);

五、创建Statement对象

创建Statement对象后,您可以使用它来执行一个SQL语句,其中有三个执行方法之一。

1、execute(String SQL)

boolean execute(String SQL):如果可以检索到ResultSet对象,则返回一个布尔值true; 否则返 回false。使用此方法执行SQL DDL语句或需要使用真正的动态SQL时。

2、executeUpdate(String SQL)

int executeUpdate(String SQL):返回受SQL语句执行影响的行数。使用此方法执行预期会影响 多个行的SQL语句,例如INSERT,UPDATE或DELETE语句。

3、executeQuery(String SQL)

ResultSet executeQuery(String SQL):返回一个ResultSet对象。当您希望获得结果集时,请使 用此方法,就像使用SELECT语句一样。

//        定义sql,创建状态通道(进行sql语句的发送)
Statement statement = connection.createStatement ();

六、CRUD操作

1、查询

// 查询学生表所有信息
ResultSet resultSet = statement.executeQuery ("select * from student");


 //        取出结果集信息
 while (resultSet.next ()) {
     // 取出数据 resuleSet.getxxx("列名")   xxx数据类型
     System.out.println ("姓名: " + resultSet.getString ("studentname") +
             "" +
             ",\t性别:" + resultSet.getString ("sex") +
             ",\t出生日期:" + resultSet.getDate ("borndate"));
 }

关于 ResultSet 的方法

  • Boolean next():  下一条数据
  • int getInt(int columnIndex) :    获取数据表中字段类型为int类型的数据  
返回值类型方法描述
Booleannext()判断是否还有下一条数据
intgetInt(int columnIndex)

获取数据表中一条数据字段类型为int类型的数据 

columnIndex --- 字段名 要与数据库中的一致

StringgetString(String columnLabel)

获取数据表中一条数据字段类型为String类型的数据 

columnLabel --- 字段名 要与数据库中的一致

ObjectgetObject(Object columnLabel)

获取数据表中一条数据字段的数据(r任何类型)

columnLabel --- 字段名 要与数据库中的一致

2、新增

// 学生表中插入一条数据
int row = statement.executeUpdate ("insert into student(studentno,studentname,sex,borndate,loginpwd,gradeid,address,email) values('S1231283','云2','女','2001-01-01',347,1,'北极','2425@qq.com')");

3、删除

//删除学生表中 学生姓名为 云 的学生信息
 int dropRow = statement.executeUpdate ("delete from student where studentname = '云'");

4、更新

// 将学生表中 学生姓名为 金蝶 的学生性别设置为女 
int updateRow = statement.executeUpdate ("update student set sex = '女' where studentname = '金蝶'");

七、关闭数据库连接

if (resultSet != null) {
    resultSet.close ();
}
if (statement != null) {
    statement.close ();
}
if (connection != null) {
    connection.close ();
}

八、注意

  • 以上均为伪代码,真实环境下需要进行异常处理

九、总代码

pppps:代码仅供参考 ,如果直接粘贴记得配置成自己的数据库

package com.yun.jdbc;

import java.sql.*;

public class MyJdbc {
    public static void main (String[] args) {

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        Savepoint here = null;
//        1、加载驱动
        try {
            Class.forName ("com.mysql.cj.jdbc.Driver");
//        2、获得连接
            String userName = "root";
            String passWord = "123456";
//        mysql8以后要设置时区 serverTimezone=UTC
            String url = "jdbc:mysql://localhost:3306/mytest?serverTimezone=UTC";
            connection = DriverManager.getConnection (url, userName, passWord);

//        3、定义sql,创建状态通道(进行sql语句的发送)
            statement = connection.createStatement ();

//            设置取消自动提交
            connection.setAutoCommit (false);

            //查询
            resultSet = statement.executeQuery ("select * from student");
            //        取出结果集信息
            while (resultSet.next ()) {
                // 取出数据 resuleSet.getxxx("列名")   xxx数据类型
                System.out.println ("姓名: " + resultSet.getString ("studentname") +
                        "" +
                        ",\t性别:" + resultSet.getString ("sex") +
                        ",\t出生日期:" + resultSet.getDate ("borndate"));
            }

            //新增
            int row = statement.executeUpdate ("insert into student(studentno,studentname,sex,borndate,loginpwd,gradeid,address,email) values('S1231283','云2','女','2001-01-01',347,1,'北极','2425@qq.com')");
//            保存点
            here = connection.setSavepoint ("here");
//            异常
            System.out.println (5/0);
            if(row != 0) {
                System.out.println ("新增成功");
            } else {
                System.out.println ("新增失败");
            }

            //删除
            int dropRow = statement.executeUpdate ("delete from student where studentname = '云'");
            if (dropRow != 0) {
                System.out.println ("删除成功");
            } else {
                System.out.println ("删除失败");
            }

            //修改
            int updateRow = statement.executeUpdate ("update student set sex = '女' where studentname = '金蝶'");
            if(updateRow != 0) {
                System.out.println ("修改成功");
            }else {
                System.out.println ("修改失败");
            }
//          提交
            connection.commit ();


        } catch (ClassNotFoundException e) {
            e.printStackTrace ();
        } catch (SQLException throwables) {
            throwables.printStackTrace ();
            try {
//                回滚到保存点
                connection.rollback (here);
            } catch (SQLException e) {
                e.printStackTrace ();
            }
        } finally {
//            关闭连接
            try {
                if (resultSet != null) {
                    resultSet.close ();
                }
                if (statement != null) {
                    statement.close ();
                }
                if (connection != null) {
                    connection.close ();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace ();
            }
        }
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值