Skip to content

Commit 1eb8260

Browse files
committed
jdbc调试
1 parent d0af16a commit 1eb8260

5 files changed

Lines changed: 154 additions & 0 deletions

File tree

test/jdbc/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# JDBC 测试工具
2+
3+
运行 PowerShell 脚本测试 JDBC 连接并显示所有表:
4+
5+
```powershell
6+
./build_and_run.ps1 -HostName 127.0.0.1 -Port 3306 -Database testdb -User root -Password ""
7+
```
8+
9+
脚本会自动下载 MySQL JDBC 驱动、编译源码并运行测试。
10+
11+
## 手动下载 JDBC 驱动
12+
13+
如果网络受限无法自动下载,请手动下载:
14+
15+
1. 访问:https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar
16+
2. 将文件保存为 `mysql-connector-java.jar`
17+
3. 放入 `test/jdbc/lib/` 目录
18+
19+
或者使用代理下载:
20+
```bash
21+
curl -x http://localhost_alpine:8899 -o mysql-connector-java.jar "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar"
22+
```
23+
24+
25+
# powershell运行注意
26+
- 核心:用 -ExecutionPolicy Bypass 临时允许运行当前脚本
27+
powershell -ExecutionPolicy Bypass -File "D:\code\www\my\github\sqlLogProxy\test\jdbc\build_and_run.ps1"

test/jdbc/TestJdbc.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import java.sql.*;
2+
import java.util.HashMap;
3+
import java.util.Map;
4+
5+
public class TestJdbc {
6+
public static void main(String[] args) {
7+
Map<String, String> params = parseArgs(args);
8+
9+
String host = params.get("host");
10+
String port = params.get("port");
11+
String database = params.get("database");
12+
String user = params.get("user");
13+
String password = params.get("password");
14+
15+
if (host == null || port == null || database == null || user == null || password == null) {
16+
System.err.println("Usage: java TestJdbc --host <host> --port <port> --database <database> --user <user> --password <password>");
17+
System.exit(1);
18+
}
19+
20+
String url = String.format("jdbc:mysql://%s:%s/%s?useSSL=false&serverTimezone=UTC", host, port, database);
21+
22+
try {
23+
Class.forName("com.mysql.cj.jdbc.Driver");
24+
System.out.println("Attempting to connect to: " + url);
25+
System.out.println("User: " + user);
26+
27+
// 简化连接参数
28+
String testUrl = url + "?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useServerPrepStmts=false";
29+
30+
try (Connection conn = DriverManager.getConnection(testUrl, user, password)) {
31+
System.out.println("Connection established successfully!");
32+
System.out.println("Connection info: " + conn.getMetaData().getDatabaseProductName() + " " + conn.getMetaData().getDatabaseProductVersion());
33+
34+
// 首先执行一个简单的查询测试代理是否工作
35+
try (Statement stmt = conn.createStatement()) {
36+
System.out.println("Testing with a simple SELECT query...");
37+
try (ResultSet rs = stmt.executeQuery("SELECT 1 as test_column")) {
38+
System.out.println("Simple query executed successfully!");
39+
while (rs.next()) {
40+
System.out.println("Result: " + rs.getString(1));
41+
}
42+
}
43+
44+
System.out.println("Now executing SHOW TABLES...");
45+
try (ResultSet rs = stmt.executeQuery("SHOW TABLES")) {
46+
while (rs.next()) {
47+
System.out.println(rs.getString(1));
48+
}
49+
}
50+
}
51+
}
52+
} catch (ClassNotFoundException e) {
53+
System.err.println("MySQL JDBC driver not found. Make sure mysql-connector-java.jar is in classpath.");
54+
System.exit(1);
55+
} catch (SQLException e) {
56+
System.err.println("Database connection failed: " + e.getMessage());
57+
System.err.println("SQL State: " + e.getSQLState());
58+
System.err.println("Error Code: " + e.getErrorCode());
59+
e.printStackTrace();
60+
System.exit(1);
61+
}
62+
}
63+
64+
private static Map<String, String> parseArgs(String[] args) {
65+
Map<String, String> params = new HashMap<>();
66+
for (int i = 0; i < args.length; i += 2) {
67+
if (i + 1 < args.length && args[i].startsWith("--")) {
68+
String key = args[i].substring(2);
69+
String value = args[i + 1];
70+
params.put(key, value);
71+
}
72+
}
73+
return params;
74+
}
75+
}

test/jdbc/bin/TestJdbc.class

4.53 KB
Binary file not shown.

test/jdbc/build_and_run.ps1

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
param(
2+
[string]$HostName = "",
3+
[string]$Port = "",
4+
[string]$Database = "",
5+
[string]$User = "",
6+
[string]$Password = ""
7+
)
8+
9+
# 检查 JDK 是否可用
10+
if (-not (Get-Command javac -ErrorAction SilentlyContinue)) {
11+
Write-Error "JDK not found. Please install JDK and ensure javac is in PATH."
12+
exit 1
13+
}
14+
15+
if (-not (Get-Command java -ErrorAction SilentlyContinue)) {
16+
Write-Error "Java runtime not found. Please install JDK and ensure java is in PATH."
17+
exit 1
18+
}
19+
20+
# 创建必要目录
21+
$libDir = "lib"
22+
$binDir = "bin"
23+
New-Item -ItemType Directory -Force -Path $libDir | Out-Null
24+
New-Item -ItemType Directory -Force -Path $binDir | Out-Null
25+
26+
# 下载 MySQL JDBC 驱动(如果不存在)
27+
$driverPath = "$libDir/mysql-connector-java.jar"
28+
if (-not (Test-Path $driverPath)) {
29+
Write-Host "Downloading MySQL JDBC driver..."
30+
try {
31+
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar" -OutFile $driverPath
32+
Write-Host "Driver downloaded successfully."
33+
} catch {
34+
Write-Error "Failed to download MySQL JDBC driver. Please manually place mysql-connector-java.jar in $libDir directory."
35+
Write-Error "Download URL: https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar"
36+
Write-Error "Or use proxy: curl -x http://localhost_alpine:8899 -o mysql-connector-java.jar <URL>"
37+
exit 1
38+
}
39+
}
40+
41+
# 编译 Java 源码
42+
Write-Host "Compiling Java source..."
43+
javac -cp "$libDir/*" -d $binDir TestJdbc.java
44+
if ($LASTEXITCODE -ne 0) {
45+
Write-Error "Compilation failed."
46+
exit 1
47+
}
48+
49+
# 运行程序
50+
Write-Host "Running JDBC test..."
51+
$classPath = "$binDir;$libDir/*"
52+
java -cp $classPath TestJdbc --host $HostName --port $Port --database $Database --user $User --password $Password
2.37 MB
Binary file not shown.

0 commit comments

Comments
 (0)