1. 程式人生 > >JAVA中JDBC連接Mysql數據庫簡單測試

JAVA中JDBC連接Mysql數據庫簡單測試

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數據庫簡單測試