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 Show Profile
Apr 05 MySQL
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 MySQL
MySQL update set 和 and的区别
May 08 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
如何使用分区处理MySQL的亿级数据优化
Jun 18 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL提取JSON字段数据实现查询
Apr 22 MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 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 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
python爬虫爬取淘宝商品信息
2018/02/23 Python
python如何读写json数据
2018/03/21 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Python-接口开发入门解析
2019/08/01 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
咖啡厅商业计划书
2014/09/15 职场文书
大学军训的体会
2014/11/08 职场文书
军训结束新闻稿
2015/07/17 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
聘任书的格式及模板
2019/10/28 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android