MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute(1)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute

从操作配置文件properties中读取连接字符串,通过该字符串进行数据连接,需要写三个文件其中,两个是java类,一个是后缀名为.properties的文件,该文件放在src工作目录下。

需要准备的包:

https://github.com/chenhaoxiang/Java

后缀为.properties的文件此处为其取名为jdbc.properties,其中的代码如下:

##MySQL
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/hncu?useUnicode=true&characterEncoding=utf-8
username=root
password=1234
##Oracle
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:orcl
#username=scott
#password=tiger

可以配置多个数据库代码,形成框架,这里只配置了MySQL和Oracle数据库的、如果换数据库了,就把相应数据库的#号注释去掉,把原来的代码给用#号注释就可以了。

接下来用单例写一个Connection的工厂类ConnFactory.java:

package cn.hncu.util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class ConnFactory {
    private static Connection con = null;
    //静态块
    static{
        try {
            //读取配置文件
            Properties p = new Properties();
            p.load(ConnFactory.class.getClassLoader().getResourceAsStream("jdbc.properties"));
            String drive = p.getProperty("driver");
            String url = p.getProperty("url");
            String user = p.getProperty("username");
            String password = p.getProperty("password");
            Class.forName(drive);
            con = DriverManager.getConnection(url, user, password);
        } catch (IOException e) {
            throw new RuntimeException("配置文件出现异常", e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("Drive.Class文件出现异常", e);
        } catch (SQLException e) {
            throw new RuntimeException("数据库访问出现异常", e);
        }
    }
    public static Connection getConnection(){
        return con;
    }
    public static void main(String[] args) {
        System.out.println(getConnection());
    }
}

演示Statement中的4个执行方法:

1, executeQuery()、

2, execute()、

3, executeUpdate()、

4, executeBatch()。

首先创建一个表格book:

create table book(
  id int auto_increment primary key,
  name varchar(30),
  price numeric(5,2),
  birth datetime
);
insert into book values(1,'Oracle',88.88,'2015-07-12 20:42:12');
insert into book values(2,'MySQL',38.66,'2015-07-12 19:22:12');

image.png

executeQuery()

@Test
    public void results() throws SQLException{
        Statement st = ConnFactory.getConnection().createStatement();
        String sql = "select * from book";
        ResultSet res = st.executeQuery(sql);
        while(res.next()){
            Integer id = res.getInt(1);
            String name = res.getString(2);
            double price = res.getDouble("price");
            //注意!这个是获取日期时间型数据的方式
            String birth = res.getDate(4)+" "+res.getTime(4);
            System.out.println(id+","+name+","+price+","+birth);
        }
        ConnFactory.getConnection().close();
    }

只能执行查询语句

网络异常,图片无法展示
|

execute()

@Test
    public void execute() throws SQLException{ 
        Statement st = ConnFactory.getConnection().createStatement();
        //测试语句:
        //测试增加数据
        //String sql = "insert into book(name,price,birth) values ('XML',23.30,'2014-09-08 12:00:05' )";
        //测试删除数据
        //String sql = "delete from book where id='2'";
        //测试查询数据
        String sql = "select * from book";
        //如果第一个结果为一个结果集,则为 true。否则为 false。
        boolean boo = st.execute(sql);
        System.out.println(boo);
        if(boo){
            ResultSet rs = st.getResultSet();
            while(rs.next()){
                //这里就只输出2个示意一下了。
                System.out.println(rs.getInt(1)+","+rs.getString(2));
            }
        }
        ConnFactory.getConnection().close();
    }

增、删、改、查的语句都能够执行。只是查询时返回的结果是告诉成功与否,如果要获取查询结果,得另外用” st.getResultSet()”获取

网络异常,图片无法展示
|

executeUpdate()

@Test
    public void executeUpdate() throws SQLException{
        Statement st = ConnFactory.getConnection().createStatement();
        //增加
        String sql = "insert into book(name,price,birth) values('红楼梦',85.66,'2013-10-08 12:00:05' )";
        //修改
        //String sql="update book set price=price*1.1";
        //删除
        //String sql ="delete from book where id=1";
        //查询--不能进行查询!!!
        //String sql = "select * from book";
        int num = st.executeUpdate(sql);//返回值是影响的行数
        System.out.println(num);
    }

只能增、删、改, 不能执行查询语句

executeBatch()

@Test 
    public void batchDemo() throws SQLException{
        Connection con  = ConnFactory.getConnection();
        String sql = "insert into book(name,price ,birth) values ('aaa',11.11,'2013-11-28 19:00:15' )";
        Statement st = con.createStatement();
        for(int i=0;i<5;i++){
            if(i==2){
                //错误的MySQL代码!
                sql = "insert into book(name,price,birth) values('aaa','aa','2013-11-28 19:00:15' )";
            }
            st.addBatch(sql);
        }
        sql = "update book set price = price* where price<30";
        st.addBatch(sql);
        int a[] = st.executeBatch();
        for(int x:a){
            System.out.println(x);
        }
        ConnFactory.getConnection().close();
    }

//执行批处理—自己本身不带事务,如果其中某条sql语句挂了,则后续的sql执行失败,前面的还是有效的。如果要事务,另外再采用:con.setAutoCommit(false)+try-cacth+ rollback/commit

image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
988
分享
相关文章
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
32 0
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
160 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
10月前
|
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
165 0
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
Java入门------static关键字和静态属性、方法
Java入门------static关键字和静态属性、方法
163 0
从零开始学习 Java:简单易懂的入门指南之方法(六)
方法的概念:方法(method)是程序中最小的执行单元注意:方法必须先创建才可以使用,该过程成为方法定义,方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用
从零开始学习 Java:简单易懂的入门指南之方法(六)
Java 学习博客_10 入门——抽象类、抽象方法、接口
以黑马程序员全套Java教程网课为主。
111 0
Java 学习博客_10 入门——抽象类、抽象方法、接口
17、JAVA入门——多态、抽象方法和抽象类
17、JAVA入门——多态、抽象方法和抽象类
162 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等