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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
4月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
371 18
|
4月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
256 4
|
5月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
200 11
|
4月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
354 5
|
5月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库中进行日期比较的多种方法介绍。
以上方法提供了灵活多样地处理和对比MySQL数据库中存储地不同格式地日子信息方式。根据实际需求选择适当方式能够有效执行所需操作并保证性能优化。
653 10
|
6月前
|
算法 Java
Java语言实现链表反转的方法
这种反转方法不需要使用额外的存储空间,因此空间复杂度为,它只需要遍历一次链表,所以时间复杂度为,其中为链表的长度。这使得这种反转链表的方法既高效又实用。
541 0
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
444 158
|
5月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1041 152

推荐镜像

更多