JAVA中JDBC連接Mysql數據庫簡單測試
阿新 • • 發佈:2018-03-27
batch 數據庫 count() found rman too zone close static
一、引用庫
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
JAVA中JDBC連接Mysql數據庫簡單測試