首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

主流數據庫 JDBC 連接配置速查表:MySQL、Oracle、PostgreSQL、SQL Server 等

     編輯:Java 相關知識

標準連接代碼模板

Class.forName("driver.class.Name"); // JDK 6+ 可省略
String url = "jdbc:subprotocol://host:port/db?params";
String user = "username", pwd = "password";
Connection conn = DriverManager.getConnection(url, user, pwd);

主流數據庫連接參數對照表

數據庫驅動類 (JDBC 4.2+)URL 格式關鍵參數說明
MySQL 5.7/8.0 com.mysql.cj.jdbc.Driver jdbc:mysql://host:3306/dbname?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true useSSL、serverTimezone (8.0 必填)、characterEncoding、allowPublicKeyRetrieval (caching_sha2_password)
PostgreSQL org.postgresql.Driver jdbc:postgresql://host:5432/dbname?currentSchema=public&ApplicationName=myApp currentSchema、ApplicationName、reWriteBatchedInserts=true (批量優化)
Oracle 12c/19c/21c oracle.jdbc.OracleDriver jdbc:oracle:thin:@//host:1521/service_name (Easy Connect)
或 jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=svc)))
SID vs Service Name、oracle.net.CONNECT_TIMEOUT、defaultRowPrefetch
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://host:1433;databaseName=db;encrypt=true;trustServerCertificate=false encrypt、trustServerCertificate、integratedSecurity (Windows 認證)、applicationName
DB2 com.ibm.db2.jcc.DB2Driver jdbc:db2://host:50000/dbname:driverType=4;retrieveMessagesFromServerOnGetMessage=true; driverType=4 (Type 4 純 Java)、currentSchema
Sybase ASE com.sybase.jdbc4.jdbc.SybDriver jdbc:sybase:Tds:host:5000/dbname?CHARSET=utf8 CHARSET、LOB_CACHE_SIZE
Informix com.informix.jdbc.IfxDriver jdbc:informix-sqli://host:1533/dbname:INFORMIXSERVER=server_name;user=user;password=pwd INFORMIXSERVER、IFX_LOCK_MODE_WAIT
H2 (嵌入式/服務端) org.h2.Driver jdbc:h2:~/test;AUTO_SERVER=TRUE;MVCC=TRUE (嵌入)
jdbc:h2:tcp://host:9092/~/test (服務端)
AUTO_SERVER、MVCC、DB_CLOSE_DELAY=-1
SQLite org.sqlite.JDBC jdbc:sqlite:/path/to/dbfile.db 文件路徑、journal_mode=WAL、busy_timeout=5000

連接池整合建議 (HikariCP 為例)

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC");
config.setUsername("user");
config.setPassword("pwd");
config.setDriverClassName("com.mysql.cj.jdbc.Driver"); // 可選
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
config.setConnectionTimeout(30000);
config.setIdleTimeout(600000);
config.setMaxLifetime(1800000);
config.setConnectionTestQuery("SELECT 1"); // 或依賴 JDBC 4 isValid()
config.setPoolName("MyApp-Pool");
DataSource ds = new HikariDataSource(config);

常見連接失敗排查清單

  1. 驅動 JAR 是否在 Classpath (Maven/Gradle 依賴)
  2. URL 格式、主機、端口、實例名/服務名/SID 是否正確
  3. 防火牆/安全組:端口放行 (3306/1521/5432/1433/50000...)
  4. 數據庫用戶權限、主機白名單 (MySQL user@'%'、Oracle tnsnames.ora)
  5. SSL/TLS 協商:useSSL、encrypt、憑證信任
  6. 時區/字符集不匹配導致亂碼或時間偏移
  7. 驅動版本與數據庫版本兼容性 (MySQL 8.0 需 8.0+ 驅動)

進階參數優化提示

  • MySQL:rewriteBatchedStatements=true 批量重寫、cachePrepStmts=true、prepStmtCacheSize=250、prepStmtCacheSqlLimit=2048
  • PostgreSQL:reWriteBatchedInserts=true、preferQueryMode=simple
  • Oracle:defaultRowPrefetch=100、useFetchSizeWithLongColumn=true
  • SQL Server:selectMethod=cursor (大結果集流式)、sendStringParametersAsUnicode=false (非 Unicode 列性能)

收藏此表,新項目接入新數據庫時複製修改即可,告別百度複製粘貼出錯的痛苦。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved