public CachedRowSet getQuery(){

Connection conn = null;
Statement stmt;
ResultSet rs;

try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "test", "test");
stmt = conn.createStatement();
rs = stmt.executeQuery("select org_name as y_name from test");

CachedRowSet crs = new CachedRowSetImpl();

crs.populate(rs);
crs.beforeFirst();
while(crs.next()) {
System.out.print(crs.getString("y_name"));
}
return crs;
} catch(Exception e) {
e.printStackTrace();
return null;
} finally {

}

}出现异常如下:
java.sql.SQLException: 無効な列名
at com.sun.rowset.CachedRowSetImpl.getColIdxByName(Unknown Source)
at com.sun.rowset.CachedRowSetImpl.getString(Unknown Source)
at com.arbj.test.Test.getQuery(Test.java:160)
at com.arbj.test.Test.main(Test.java:79)
是怎么回事啊,SQL直接写列名没问题,只要想把列名指定为其他的就出现这样的问题,怎么回事啊?

解决方案 »

  1.   

    日文啊前面都别动,crs.getString("y_name")改成crs.getString("org_name")试试看
      

  2.   

    那肯定是没问题了,但是我现在要解决的是像这样很正常的SQL文出现的问题,我用code=Java]System.out.print(crs.getMetaData().getColumnName(1));[[/code]打印出来的结果竟然是org_name
      

  3.   

    y_name  -> org_name 查询语句中确实没有此列
    另注意关闭连接
    rs.close();
    stmt.close();
    conn.close();
      

  4.   

    呵呵,这只是我的测试代码,所以随便写写的,不过还是谢谢你的提醒,上面的sql问没错,列名也的确有这个,找到原因了,是我的mysql的驱动jar包不对,用5.0版本的就没问题了。我的是5.1的