一、引用库
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"); //255 System.out.print(md.getColumnName(i) + "\t"); //name System.out.print(md.getColumnType(i) + "\t"); //12 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