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语言编写的类和接口 ...
随机推荐
- 【POI】maven引用POI的依赖,XSSFWorkbook依旧无法使用的问题。
maven项目引用POI的jar: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependenc ...
- Linux学习19-gitlab配置邮箱postfix(新用户激活邮件)
前言 gitlab新增新用户有两种方式,第一种可以用户主动注册(自己设置密码):第二种也可以通过root管理员用户直接添加用户,发个邮件到用户的邮箱里,收到邮件后激活. 如果是第二种方式添加新用户的话 ...
- Mybatis ResultMap Collection 复合主键
<resultMap type="XX" id="XXMap"> <id property="id" c ...
- ack-grep 代码全文搜索
安装 ubuntu下要安装ack-grep,因为在debian系中,ack这个名字被其他的软件占用了. sudo apt-get install ack-grep 特点 大家都说自己的东西好,因此ac ...
- JDK(Java SE Development Kit)的安装与环境变量的配置
本文参考于:http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 感谢作者的贡献~ 首先,进入网址下载JDK:http://ww ...
- CircleImageManager——圆形 / 圆角图片的工具类
这个类可以实现圆角,或者是圆形图片的操作. CircleImageManager.java package com.kale.utils; import android.content.Context ...
- 配置SSD-caffe测试时出现“Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal”解决方案
这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推. 但是SSD配置时 ...
- How to fix Error: listen EADDRINUSE while using nodejs
If I run a server with the port 80, and I try to use xmlHTTPrequest i get this error: Error: listen ...
- 100base-T
100Base-T是一种以100Mbps速率工作的局域网(LAN)标准,它通常被称为快速以太网标准,并使用两对UTP(非屏蔽双绞线)铜质电缆. 快速以太网 : 与10BASE-T的区别在于网络速率是1 ...
- org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.xugao.bean.MemberLevel.memberpointrate
由于数据不合法的原因,好几次遇到: org.hibernate.PropertyAccessException: Null value was assigned to a property of pr ...