zoukankan      html  css  js  c++  java
  • 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) + "	"); //java.lang.String
                    System.out.print(md.getColumnDisplaySize(i) + "	"); //255
                    System.out.print(md.getColumnName(i) + "	"); //name
                    System.out.print(md.getColumnType(i) + "	"); //12
                    System.out.print(md.getColumnTypeName(i) + "	"); //VARCHAR
                    System.out.println(md.getColumnClassName(i) + "	"); //java.lang.String
                }
                while (resultSet.next()) {
                    for (var i = 1; i <= columnCount; i++) {
                        System.out.print(resultSet.getObject(i));
                        System.out.print("	");
                    }
                    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 + "	" + name + "	" + 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 FilesJavajdk-10injava" -javaagent:D:ApplicatonDevToolsJetBrainsIntelliJIdealibidea_rt.jar=33464:D:ApplicatonDevToolsJetBrainsIntelliJIdeain -Dfile.encoding=UTF-8 -classpath D:ProjectJavaProjectJavaDemooutproductionJavaDemo;C:Usersyungoal.m2
    epositorycomalibabafastjson1.2.16fastjson-1.2.16.jar;C:Usersyungoal.m2
    epositorymysqlmysql-connector-java6.0.6mysql-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

      

  • 相关阅读:
    react-router-dom中的BrowserRouter和HashRouter,link与Navlink
    在React中使用react-router-dom路由
    详解react中的state,props,refs
    简单明了的vuex详解
    暂时性死区
    es6中的块级作用域
    es6的let
    前端模块化
    Web框架
    百分比布局 双飞翼布局 圣杯布局
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/8656669.html
Copyright © 2011-2022 走看看