如何使用Java与Mysql进行数据交互
ArthurSlog
SLog-5
Year·1
Guangzhou·China
July 11th 2018
做到每个敲下的按键、每次鼠标的点击、每次手机屏幕的触碰,都能产生价值
开发环境MacOS(High Sierra 10.13.5)
Java为了开发应用级的程序,整个开发链比较繁琐复杂,所以会需要更多的时间来掌握。
老规则,让我们明确一下需要的信息Mysql官方手册
打开命令行,测试一下java,如果提示没有安装JDK,移步JavaJDK下载
安装完JDK,测试一下安装是否完整
java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
复制代码
javac -version
javac 10.0.1
复制代码
- 在macOS中,JDK安装路径是/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home
- 在macOS中,JRE安装路径是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
下载Connector / J,选择platform Independent,选择Platform Independent (Architecture Independent), ZIP Archive下载
下载好Connector / J后解压文件得到文件夹,配置 CLASSPATH
export CLASSPATH=~/Downloads/mysql-connector-java-8.0.11.jar:$CLASSPATH
- 下面是完整代码
LoadDriver.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;// assume that conn is an already created JDBC connection (see previous examples)
public class LoadDriver {public static void main(String[] args) {try {// The newInstance() call is a work around for some// broken Java implementationsClass.forName("com.mysql.cj.jdbc.Driver").newInstance();Connection conn = null;try {conn =DriverManager.getConnection("jdbc:mysql://localhost/my_db?" +"user=root&password=88888888");// Do something with the ConnectionStatement stmt = null;ResultSet rs = null;try {stmt = conn.createStatement();rs = stmt.executeQuery("SELECT * FROM Account");// or alternatively, if you don't know ahead of time that// the query will be a SELECT...if (stmt.execute("SELECT * FROM Account")) {rs = stmt.getResultSet();}// Now do something with the ResultSet ....ResultSetMetaData rsmd = rs.getMetaData();int columnsNumber = rsmd.getColumnCount();while (rs.next()) {for (int i = 1; i <= columnsNumber; i++) {if (i > 1) System.out.print(", ");String columnValue = rs.getString(i);System.out.print(columnValue + " " + rsmd.getColumnName(i));}System.out.println("");}}catch (SQLException ex){// handle any errorsSystem.out.println("SQLException: " + ex.getMessage());System.out.println("SQLState: " + ex.getSQLState());System.out.println("VendorError: " + ex.getErrorCode());}finally {// it is a good idea to release// resources in a finally{} block// in reverse-order of their creation// if they are no-longer neededif (rs != null) {try {rs.close();} catch (SQLException sqlEx) { } // ignorers = null;}if (stmt != null) {try {stmt.close();} catch (SQLException sqlEx) { } // ignorestmt = null;}}} catch (SQLException ex) {// handle any errorsSystem.out.println("SQLException: " + ex.getMessage());System.out.println("SQLState: " + ex.getSQLState());System.out.println("VendorError: " + ex.getErrorCode());}} catch (Exception ex) {// handle the errorSystem.out.println("Exception: " + ex.getMessage());}}
}
复制代码
执行流程如下:
- 用java应用程序注册你的mysql jdbc驱动程序,参考Mysql/JDBC执行SQL手册
Class.forName("com.mysql.cj.jdbc.Driver").newInstance()
复制代码
- 连接数据库
conn =DriverManager.getConnection("jdbc:mysql://localhost/my_db?" + "user=root&password=88888888")
复制代码
- 获得连接对象,并执行SQL指令
Statement stmt = null;
ResultSet rs = null;stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM Account");
复制代码
- 获得SQL执行结果,对结果进行打印
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (rs.next()) {for (int i = 1; i <= columnsNumber; i++) {if (i > 1) System.out.print(", ");String columnValue = rs.getString(i);System.out.print(columnValue + " " + rsmd.getColumnName(i));}System.out.println("");}
复制代码
- 打印SQL结果
ResultSet resultSet = statement.executeQuery("SELECT * from foo");
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (resultSet.next()) {for (int i = 1; i <= columnsNumber; i++) {if (i > 1) System.out.print(", ");String columnValue = resultSet.getString(i);System.out.print(columnValue + " " + rsmd.getColumnName(i));}System.out.println("");
}
复制代码
- 切换到LoadDriver.java文件路径下,编译LoadDriver.java文件
javac LoadDriver.java
- 编译生成LoadDriver.class,编译提示
注: LoadDriver.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
复制代码
- 执行LoadDriver.class文件
java LoadDriver
- 执行结果,打印Account表信息如下:
1 ID, ArthurSlog AccountName, ArthurSlog Password
复制代码
- 至此,Java与MySQL成功实现了数据交互。
欢迎关注我的微信公众号 ArthurSlog
如果你喜欢我的文章 欢迎点赞 留言
谢谢
如何使用Java与Mysql进行数据交互相关推荐
- java向mysql插入数据乱码问题解决
java向mysql插入数据乱码问题解决 参考文章: (1)java向mysql插入数据乱码问题解决 (2)https://www.cnblogs.com/jack204/archive/2012/0 ...
- Slog3_如何使用Python与Mysql进行数据交互
ArthurSlog SLog-3 Year·1 Guangzhou·China July 9th 2018 自己的梦想需要你自己去实现 开发环境MacOS(High Sierra 10.13.5) ...
- java与数据库的数据交互,Java与数据库初步交互(后续需要进行优化)
1.浅谈Java-MVC(个人理解) lModel层存放数据实体 lDao层访问数据库返回结果集给Controller层 lModelLogic(Model分支)用来进行业务逻辑处理,并进行一系列的判 ...
- 微信小程序 通过nodeJs操作MySQL进行数据交互
下面的操作,我是通过phpStudy和Navicat for MySQL搭建起来的开发环境 我提供一个Navicat for MySQL的安装和破解方法:https://blog.csdn.net/m ...
- java获取mysql的数据_【助教】Java获取数据库数据展示
本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子. 实际上,我们要解决以下两个问题: Java与数据库交互(以JDBC为例) 数据展示在前台页面(以Servlet+J ...
- java向mysql写入数据慢_通过java代码往mysql数据库中写入日期相关数据少13个小时...
通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...
- 安卓连接mysql客户端_安卓客户端与mysql服务器端数据交互
1.安卓客户端的配置(上传数据) package com.dlvtc.upphp; import java.io.IOException; import java.io.UnsupportedEnco ...
- 一次较为完整的原生JavaScript AJAX与Java的前后端数据交互
效果 Maven 依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.se ...
- java把mysql大数据量表每个文件最多10MB分批次写入到txt文件中
需求描述: 现在利率报备系统需要把数据上传到第三方系统,表中的数据量非常大,我们需要把表中的数据生成txt文件,然后上传到第三方系统,并且,上传的txt有大小限制,不能超过10MB,后面还需要压缩成z ...
最新文章
- 项目:IT资源共享资源(登录前端)1
- pixhawk的姿态控制算法解读
- 浅析 EF Core 5 中的 DbContextFactory
- 一个神奇的测试_一个神奇的测试!测一测孩子的健康成长水平!
- 计量风险系列—两大定价产品怎么计算风险损失
- UVN相机模型矩阵推导
- Mac更新Big Sur或者Monterey后没有管理员账户或当前账户没有管理员权限或rm /var/db/.AppleSetupDone: No such file or directory解决方案
- java解析json字符串数据
- Hashtable如何保证线程安全
- UVA - 10410 -通过dfs序列和bfs序列还原树
- 用敏捷思维来指导我们的工作和学习 --专栏《说透敏捷》学习总结
- 虚拟机或公有云搭建wordpress博客
- 计算机组成中位、字节、字、字长、存储单元、存储字、存储字的辨析
- 【翻译】CEDEC2014[跨越我的尸体2]跨越Stylized Rendering
- 世界500强公司面试题(很多)
- 大数据治理:那些年,我们一起踩过的坑
- 济南2022年全面实行电子劳动合同,爱签电子合同为HR赋能增效
- 【毕业设计day04】思路理清
- 电脑待机服务器没有响应,电脑和服务器的CPU的uncore待机功耗显示异常的问题
- HTML5移动端手机网站开发
热门文章
- 【2013年11月12号】日记
- Eclipse导入工程后显示小红叉叉怎么解决?
- CodeSmith使用笔记
- 解决TM2008的界面字体问题
- #{}不自动改参数类型_ORT-260电动打包机常规参数
- 光流 | 基于Lukas-Kanade光流法的目标跟踪(附C++代码)
- 浅谈C/C++引用和指针的联系和区别
- select 1 from table
- html 价格列表组件,评价列表ratings组件
- linux离线安装python3 devel_linux离线安装python3