use*_*790 15 java mysql metadata sqlexception
我想获取给定预准备语句的参数名称和参数类型.我正在使用MySQL数据库.但是当我运行我的程序时,它会抛出一个错误:
Exception in thread "main" java.sql.SQLException: Parameter metadata not available for the given statement
Run Code Online (Sandbox Code Playgroud)
在这条线上
String paramTypeName = paramMetaData.getParameterTypeName(param);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样.如果可能,请有人帮助我.
这是我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
Connection conn = getMySqlConnection();
Statement st = conn.createStatement();
String query = "select * from survey where id > ? and name = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
ParameterMetaData paramMetaData = pstmt.getParameterMetaData();
if (paramMetaData == null) {
System.out.println("db vendor does NOT support ParameterMetaData");
} else {
System.out.println("db vendor supports ParameterMetaData");
// find out the number of dynamic parameters
int paramCount = paramMetaData.getParameterCount();
System.out.println("paramCount=" + paramCount);
System.out.println("-------------------");
for (int param = 1; param <= paramCount; param++) {
System.out.println("param number=" + param);
String paramTypeName = paramMetaData.getParameterTypeName(param);
System.out.println("param SQL type name=" + paramTypeName);
}
}
pstmt.close();
conn.close();
}
public static Connection getMySqlConnection() throws Exception {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
}
Run Code Online (Sandbox Code Playgroud)
Bha*_*hah 12
根据这个
当没有元数据可用时,驱动程序是否应该为PreparedStatements生成简化的参数元数据,因为服务器不支持准备语句,或者服务器端预准备语句被禁用?
你必须设置generateSimpleParameterMetadata为true
使用类似于此的连接字符串
jdbc:mysql://localhost:3306/mydb?generateSimpleParameterMetadata=true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9096 次 |
| 最近记录: |