import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Jdbctest { public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@192.168.1.102:1521:ora9";
String username = "scott";
String password = "tiger";
Connection conn = DriverManager.getConnection(url, username, password);

PreparedStatement ps = conn.prepareStatement("select *from users where password=?");
ParameterMetaData pmm = ps.getParameterMetaData();//这行有问题
String name = pmm.getParameterTypeName(1);
System.out.println(name);
ps.close();
conn.close();
}}跑出来会报个什么不支持的特性错误~~oracle9不是支持吗?

解决方案 »

  1.   

    oracle9没有用过,一直用的是orcale10.0,在10.0版本里应该是没有问题的!
      

  2.   

    用的是SQL2000,对Orcale不太了解
      

  3.   

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ParameterMetaData;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    public class Jdbctest {    public static void main(String[] args) throws ClassNotFoundException, SQLException {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@192.168.1.102:1521:ora9";
            String username = "scott";
            String password = "tiger";
            Connection conn = DriverManager.getConnection(url, username, password);
            
            PreparedStatement ps = conn.prepareStatement("select *from users where password=?");//你这个问号是输入的啊  我怎么看不到有任何的set 方法
            ParameterMetaData pmm = ps.getParameterMetaData();//这行有问题
            String name = pmm.getParameterTypeName(1);//这个写法  我感觉象存储过程取值
            System.out.println(name);
            ps.close();                      再说差出来的只有一条记录吗  或保证就一个属性吗?
            conn.close();
        }}          我写的一个方法   最简单的了
    public static  boolean selectusername(getset set) {
    boolean flag=false;
    Connection connection =open.open();
    PreparedStatement pStatement=null;
    ResultSet rSet=null;
    System.err.println(set.getUsername()+set.getPassword());
    try {
    pStatement=connection.prepareStatement("select * from account where username=? and password=?");
    pStatement.setString(1,set.getUsername());
    pStatement.setString(2,set.getPassword());
    rSet=pStatement.executeQuery();

    if (rSet.next()) {
    System.err.println("=======");
    flag=true;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return flag;

    }
      

  4.   

        你的用法有问题,能不能说下你要实现什么目的啊
        ParameterMetaData和存储过程有关联,我看你代码中也没出现存储过程(ParameterMetaData我并没用过)
        你是不是把ParameterMetaData和ResultSetMetaData混淆了啊?
      

  5.   

    你的用法有问题,能不能说下你要实现什么目的啊 
        ParameterMetaData和存储过程有关联,我看你代码中也没出现存储过程(ParameterMetaData我并没用过) 
        你是不是把ParameterMetaData和ResultSetMetaData混淆了啊?
      

  6.   

    用的是Oracle14驱动呢~~没问题吧~
      

  7.   

    ParameterMetaData可用于获取关于 PreparedStatement 对象中参数的类型和属性信息的对象。 这个怎么会个存储过程有关系呢?
    存储过程不是用CallableStatement 吗?
    大哥能解释下不?
      

  8.   

    不过我确实是想得到ResultSetMetaData 也可以得到的值=。=!
      

  9.   

    你的ORACLE DRIVER用的哪个?CLASS6?
      

  10.   

    select *from users where password=?
    这里有问题吧? 
    select * from users where password=?
      

  11.   


     PreparedStatement ps = conn.prepareStatement("select *from users where password=?");
      这完了是不是要set下参数值啊?
      String para = "100"
      ps.setString(1,para);   然后在这样 看看行不?
       ParameterMetaData pmm = ps.getParameterMetaData();//这行有问题