JDBC学习笔记 特殊操作(获取自增长字段以及获取元数据)

获取自增长字段的新增值

public static void main(String[] args) {
   try (Connection conn = DriverManager.getConnection("jdbc:mysql:///mydata?characterEncoding=utf8&useSSL=true", "root", "root");
         PreparedStatement stmt = conn.prepareStatement("insert into testauto values(null,?)", Statement.RETURN_GENERATED_KEYS);
       ) {
          Class.forName("com.mysql.jdbc.Driver");
          for (int i = 1; i < 11; i++) {
                stmt.setInt(1, i);
                stmt.execute();
          }
          ResultSet rs = stmt.getGeneratedKeys();
          if (rs.next()) {
                int newNum = rs.getInt(1);
                System.out.println(newNum);
               // System.out.println(rs.getInt(2));java.sql.SQLException: Column Index out of range, 2 > 1.
          }
        } catch (Exception e) { e.printStackTrace();} 
    }

有几点要注意的
1.当mysql的版本高于mysql-connector时需要在连接行添加 :
?useSSl=true
2.在5.1.7版本之后的mysql-connector中preparedStatement要获取自增长字段的值必须写成如下格式声明返回keys

PreparedStatement stmt = conn.prepareStatement(
"insert into testauto values(null,?)", Statement.RETURN_GENERATED_KEYS);

获取元数据

import java.sql.*;

public class GetDatabaseMetaData {
    public static void main(String[] args) throws Exception {
        try (Connection conn = DriverManager.getConnection("jdbc:mysql:///mydata?useSSL=true&user=root&password=root");) {
            Class.forName("com.mysql.jdbc.Driver");
            DatabaseMetaData dbmd = conn.getMetaData();
            // 获取数据库服务器产品名称
            System.out.println("数据库产品名称:\t" + dbmd.getDatabaseProductName());
            // 获取数据库服务器产品版本号
            System.out.println("数据库产品版本:\t" + dbmd.getDatabaseProductVersion());
            // 获取数据库服务器用作类别和表名之间的分隔符 如test.user
            System.out.println("数据库和表分隔符:\t" + dbmd.getCatalogSeparator());
            // 获取驱动版本
            System.out.println("驱动版本:\t" + dbmd.getDriverVersion());

            System.out.println("可用的数据库列表:");
            // 获取数据库名称
            ResultSet rs = dbmd.getCatalogs();

            while (rs.next()) {
                System.out.println("数据库名称:\t" + rs.getString(1));
            }
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43313769/article/details/85837419
今日推荐