MySQL详解进行JDBC编程与增删改查方法


Posted in MySQL onJune 16, 2022

Java的数据库编程JDBC

概念

  • JDBC是一种用于执行sql语句的Java API,他是java中的数据库连接规范,这个API由一些接口和类组成。它为java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问
  • 本质是通过代码自己实现一个MySQL客户端,通过网络和服务器进行数据的交互,客户端不能凭空出现,所以数据库提供了一组API方便我们实现
  • 数据库的种类有很多,不同的数据库提供的API不太一样,所以java为了解决这一问题提供了JDBC,java自带的一种数据库操作API,这种API覆盖所有数据库操作的操作方式
  • 本质上是java自身完成了JDBC API和数据库API之间进行转换

MySQL详解进行JDBC编程与增删改查方法

使用步骤

创建DataSource对象,这个对象就描述了数据库服务器在哪

DataSource dataSource = new MysqlDataSource();
		//设置数据库所在的地址
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/lmp?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");

通过Connection连接数据库(输入密码连接成功)

//import java.sql.Connection;
 Connection connection  = dataSource.getConnection();

拼接sql语句(写入sql语句)

String sql = "insert into student values(1,'张三')";

将sql语句包装成对象

PreparedStatement statement = connection.prepareStatement(sql);

执行sql语句(按下回车执行sql语句)

int ret = statement.executeUpdate();
  • 执行 update delete insert 使用 executeUpdate() 方法
  • 执行 select 使用 executeQuery() 方法
  • 使用 executeQuery() 方法 会返回一个resultSet集合, 包含查找到的数据, 初始情况下resultSet不指向任一行记录, 使用next,让他指向第一条记录, 再使用next指向下一条记录

释放资源

statement.close();
 connection.close();

利用JDBC实现增加(insert)

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf-8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");
        Connection connection = dataSource.getConnection();
        System.out.println("输入id");
        int id = scanner.nextInt();
        System.out.println("输入名字");
        String name = scanner.next();
        String sql = "insert into student values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        int ret = statement.executeUpdate();
        if(ret == 1){
            System.out.println("插入成功");
        }else {
            System.out.println("插入失败");
        }
        statement.close();
        connection.close();
    }
}

利用JDBC实现删除(delete)

public class TestJDBCDelete
{
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");
        Connection connection = dataSource.getConnection();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        int id = scanner.nextInt();
        String sql = "delete from student where id = ?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1,id);
        int ret = preparedStatement.executeUpdate();
        System.out.println(ret);
        preparedStatement.close();
        connection.close();
    }

利用JDBC实现修改(update)

public class TestJDBCUpdate {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");
        Connection connection = dataSource.getConnection();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要修改的学生id");
        int id = scanner.nextInt();
        System.out.println("请输入要修改的学生姓名");
        String name = scanner.next();
        String sql = "update student set name = ? where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);
        int ret = statement.executeUpdate();
        System.out.println(ret);
        statement.close();
        connection.close();
    }
}

利用JDBC实现查找(select)

public static void testJDBCSelect() throws SQLException {
        //1创建DataSource对象
        DataSource dataSource = new MysqlDataSource();
        //2连接数据库
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_5_31?characterEncoding=utf-8&useSSL=true");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("listen");
        Connection connection = dataSource.getConnection();
        //3拼接sql
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4执行sql
        ResultSet resultSet = statement.executeQuery();
        //5遍历得到的集合
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int classId = resultSet.getInt("classId");
            System.out.println("id " + id + " name " + name + " classId " + classId);
        }
        //6关闭资源
        resultSet.close();
        statement.close();
        connection.close();
    }

到此这篇关于MySQL详解进行JDBC编程与增删改查方法的文章就介绍到这了,更多相关MySQL JDBC编程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
MySQL创建索引需要了解的
Apr 08 MySQL
MySQL 全文索引使用指南
May 25 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
MySQL 开窗函数
Feb 15 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 #MySQL
MySQL聚簇索引和非聚簇索引的区别详情
关于mysql中string和number的转换问题
Jun 14 #MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 #MySQL
手把手带你彻底卸载MySQL数据库
MYSQL中文乱码问题的解决方案
Jun 14 #MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 #MySQL
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
php简单日历函数
2015/10/28 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
通过Python实现自动填写调查问卷
2017/09/06 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python json转字典字符方法实例解析
2020/04/13 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
会计应聘求职信范文
2013/12/17 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
社会实践活动总结范文
2014/07/03 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
公司聚餐通知
2015/04/22 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书