import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//参数的数据源信息
public class PMMD {
public static void main(String[] args) throws SQLException {
read("select id,name,birthday,money from user1 where name=? and birthday<? and money>?",null);
}
static void read(String sql,Object[] params) throws SQLException{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtilsSing.getInstance().getConnection();
ps = conn.prepareStatement(sql);
ParameterMetaData pmd = ps.getParameterMetaData();
int count = pmd.getParameterCount();
for(int i =1;i<=count;i++){
System.out.print(pmd.getParameterClassName(i)+"\t");
System.out.print(pmd.getParameterType(i)+"\t");
System.out.println(pmd.getParameterTypeName(i));
}
} finally{
JdbcUtils.free(rs,ps,conn);
}
}
}
报错如下:
Java codeException in thread "main" java.sql.SQLException: 不支持的特性
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:119)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:115)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:221)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:293)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:574)
at oracle.jdbc.driver.DatabaseError.throwUnsupportedFeatureSqlException(DatabaseError.java:1009)
at oracle.jdbc.driver.OracleParameterMetaData.getParameterClassName(OracleParameterMetaData.java:193)
at com.jdbc.PMMD.read(PMMD.java:27)
at com.jdbc.PMMD.main(PMMD.java:12)
有些JDBC驱动确实不是支持所有的元数据操作。
但后两个应该是可以的,你可以注释掉第一个。小学教师实习报告
用ps.executeQuery();调用?不是已经预处理了吗?
但是我这里面 那几个问号没有set啊,不能调用吧。
我只是单纯的想知道这几个问号是什么类型和名字而已~~~
oracle真的不能使用ParameterMetaData这个类么
能,设置好参数并执行,之后就没问题了。