JAVA中JDBC连接Mysql数据库简单测试
一、引用库
maven库:mysql:mysql-connector-java:6.0.6
二、SDK环境
JAVA JDK10
三、测试代码
package com.mysql.mysqlconnector;
import java.sql.*;
public class DbMain {
public static void main(String[] args) throws ClassNotFoundException {
System.out.println("Data base connection test:");
Connection connection;
var driver = "com.mysql.cj.jdbc.Driver";
var url = "jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai"; //注意,新版要求必须加上serverTimezone
var user = "root";
var password = "password";
try {
Class.forName(driver);
var conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed())
System.out.println(String.format("conection to %s successfully.", url));
//statement 执行不能使用参数的SQL
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM student WHERE RowId<999 ");
ResultSetMetaData md = resultSet.getMetaData();
var columnCount = md.getColumnCount();
for (var i = 1; i <= columnCount; i++) {//注意起始数字
System.out.println("---------------------");
System.out.print(md.getColumnClassName(i) + "\t"); //java.lang.String
System.out.print(md.getColumnDisplaySize(i) + "\t"); //
System.out.print(md.getColumnName(i) + "\t"); //name
System.out.print(md.getColumnType(i) + "\t"); //
System.out.print(md.getColumnTypeName(i) + "\t"); //VARCHAR
System.out.println(md.getColumnClassName(i) + "\t"); //java.lang.String
}
while (resultSet.next()) {
for (var i = 1; i <= columnCount; i++) {
System.out.print(resultSet.getObject(i));
System.out.print("\t");
}
System.out.println();
}
statement.close();
// prepareStatement
var prepareStatement = conn.prepareStatement("SELECT * FROM student WHERE RowId<?");
prepareStatement.setInt(1, 999);//注意这里,JDBC中的ColumnIndex是从1开始的。
ResultSet results = prepareStatement.executeQuery();
while (results.next()) {
var rowId = results.getInt(1); //注意这里,JDBC中的ColumnIndex是从1开始的。
var name = results.getString(2);
var age = results.getInt(3);
System.out.println(rowId + "\t" + name + "\t" + age);
}
prepareStatement.close();
// insert
var insertPrepareStatement = conn.prepareStatement("INSERT INTO student(name,age) VALUES (?,?)", Statement.RETURN_GENERATED_KEYS);
insertPrepareStatement.setString(1, "Sindrol");
insertPrepareStatement.setInt(2, 28);
if (insertPrepareStatement.executeUpdate() > 0) {
ResultSet gk = insertPrepareStatement.getGeneratedKeys();
if (gk.next())
System.out.println("Insert into success. primary key RowId =" + gk.getInt("GENERATED_KEY"));
}
insertPrepareStatement.close();
//batch commit.
conn.setAutoCommit(false);//先停止自动提交。
var batchPrepareStatement = conn.prepareStatement("INSERT INTO student(name,age) VALUES (?,?)", Statement.RETURN_GENERATED_KEYS);
for (int i = 0; i < 5; i++) {
batchPrepareStatement.setString(1, "Lingling_" + i);
batchPrepareStatement.setInt(2, (20 + i));
batchPrepareStatement.addBatch();
}
try {
var intArrs = batchPrepareStatement.executeBatch();
for (var eff : intArrs)
System.out.println("eff:" + eff);
conn.commit();
batchPrepareStatement.clearBatch();//提交后,清空Batch。
var keys = batchPrepareStatement.getGeneratedKeys();
while (keys.next()) {
int rowId = keys.getInt("GENERATED_KEY");
System.out.println("rowid:" + rowId);
}
} catch (Exception ex) {
System.out.println("commit failed and will rollback:" + ex.getMessage());
conn.rollback();
}finally {
batchPrepareStatement.close();
}
if (!conn.isClosed()) conn.close();
} catch (Exception ex) {
System.out.println("SQL操作异常:" + ex.getMessage());
}
}
}
四、运行效果
"C:\Program Files\Java\jdk-10\bin\java" -javaagent:D:\Applicaton\DevTools\JetBrains\IntelliJIdea\lib\idea_rt.jar=33464:D:\Applicaton\DevTools\JetBrains\IntelliJIdea\bin -Dfile.encoding=UTF-8 -classpath D:\Project\JavaProject\JavaDemo\out\production\JavaDemo;C:\Users\yungoal\.m2\repository\com\alibaba\fastjson\1.2.16\fastjson-1.2.16.jar;C:\Users\yungoal\.m2\repository\mysql\mysql-connector-java\6.0.6\mysql-connector-java-6.0.6.jar com.mysql.mysqlconnector.DbMain
Data base connection test:
conection to jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai successfully.
---------------------
java.lang.Integer 11 rowid 4 INT java.lang.Integer
---------------------
java.lang.String 255 name 12 VARCHAR java.lang.String
---------------------
java.lang.Integer 11 age 4 INT java.lang.Integer
1 songxingzhu 27
2 wanghaixing 28
3 Sindrol 28
4 Sindrol 28
5 Sindrol 28
6 Sindrol 28
7 Sindrol 28
8 Sindrol 28
9 Lingling_0 20
10 Lingling_1 21
11 Lingling_2 22
12 Lingling_3 23
13 Lingling_4 24
1 songxingzhu 27
2 wanghaixing 28
3 Sindrol 28
4 Sindrol 28
5 Sindrol 28
6 Sindrol 28
7 Sindrol 28
8 Sindrol 28
9 Lingling_0 20
10 Lingling_1 21
11 Lingling_2 22
12 Lingling_3 23
13 Lingling_4 24
Insert into success. primary key RowId =14
eff:1
eff:1
eff:1
eff:1
eff:1
rowid:15
rowid:16
rowid:17
rowid:18
rowid:19 Process finished with exit code 0
JAVA中JDBC连接Mysql数据库简单测试的更多相关文章
- ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
- java用JDBC连接MySQL数据库的详细知识点
想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...
- java 通过jdbc连接MySQL数据库
先了解下JDBC的常用接口 1.驱动程序接口Driver 每种数据库的驱动程序都应该提供一个实现java.sql.Driver接口的类,简称Driver类.通常情况下,通过java.lang.Clas ...
- Java使用JDBC连接MySQL数据库
1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...
- JAVA使用JDBC连接MySQL数据库 二
JAVA连接MySQL稍微繁琐,所以先写一个类用来打开或关闭数据库: public class DBHelper { String driver = "com.mysql.jdbc.Driv ...
- Java:jdbc连接mysql数据库
安装eclipse和mysql的步骤这里不赘述了. 1.一定要下jar包 要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包.低版本的jar包 ...
- 【转】Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
- Java 通过JDBC连接Mysql数据库的方法和实例
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
- Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
随机推荐
- SQLServer2008:在查看表记录或者修改存储过程时出现错误。错误消息为: 目录名无效
登陆数据库后,右键打开表提示:目录名无效,执行SQL语句也提示有错误,本来想重装的这个肯定能解决,但是这个方法真的不视为上上策啊,于是在网上找到了这个解决办法,还真是立即见效啊!分享给大家,希望有帮助 ...
- delphiredisclient开源GIT
delphiredisclient - Redis client for Delphi Delphi Redis Client版本2(此分支)与Delphi 10.1 Berlin兼容,更好.警告!如 ...
- C#编程(六十七)----------LINQ提供程序
原文链接:http://blog.csdn.net/shanyongxu/article/details/47257511 LINQ提供程序 .NET3.5包含了几个LINQ提供程序. LINQ提供程 ...
- linux 下查看硬盘分区类型
可以用 df 这个命令 具体 要 man df 仔细看看 实例 [root@localhost mnt]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点/dev ...
- yii开发第一部分之执行流程
一 目录文件 |-framework 框架核心库 |--base 底层类库文件夹,包含CApplication(应用类,负责全局的用户请求处理,它管理的应用组件集,将提供特定功能给整个应用程序),CC ...
- 用jquery实现的QQ邮箱里的多收件人选取及其他效果改进版
我们先来看一下之前网上的版本效果: 发现很多bug且应用场景不一样,没办法只能自己写了 操作时 textarea 的值只是显示效果,实现的参数为 hidden 2017-04-25再次改进版与新版的 ...
- 使用开源库 Objective-C RegEx Categories 处理正则表达式
Objective-C RegEx Categories https://github.com/bendytree/Objective-C-RegEx-Categories 使用说明:将 RegExC ...
- Java命令学习系列(一)——Jps
jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号. jps相当于Solaris进程工具ps.不象”pgrep java”或”ps -ef grep java”,jps ...
- go语言之进阶篇显式调用panic函数
1.显式调用panic函数 示例: package main import "fmt" func testa() { fmt.Println("aaaaaaaaaaaaa ...
- Linux下线程同步的几种方法
Linux下提供了多种方式来处理线程同步,最常用的是互斥锁.条件变量和信号量. 一.互斥锁(mutex) 锁机制是同一时刻只允许一个线程执行一个关键部分的代码. 1. 初始化锁 int pthrea ...