public static void main(String [] arg){
TestConn con=new TestConn();
try {
Connection conn=con.getConn2();
System.out.println("getConn2:"+con.getConn2());
Statement stmt = conn.createStatement();
ResultSet  rs = stmt.executeQuery("select * from t_user");
            ResultSetMetaData rsmd = rs.getMetaData();
            int col = rsmd.getColumnCount();
            while (rs.next()) {
                String rows[] = new String[col];
                for (int i = 0; i < col; i++) {
                   System.out.println(rs.getString(i+1));//此处得到了n多数据                }
            }
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public Connection getConn2(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String url="jdbc:oracle:thin:@localhost:1521:cyc";
// orcl为数据库的SID
String user="vmsuser";
String password="vmsuser";
Connection conn=null;
try {
System.out.println("将连接数据库");
conn= DriverManager.getConnection(url,user,password);
System.out.println("数据库连接:"+conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}

解决方案 »

  1.   

    public static void main(String[] args) {
    SessionFactory   sessionFactory   =   
                new   Configuration().configure().buildSessionFactory(); 
              Session session = sessionFactory.openSession(); 
             Transaction tx = session.beginTransaction(); 
             Query   q =   session.createQuery(" from TUser"); //执行到这里报错           List list = q.list(); 
                tx.commit(); 
    }hibernate.cfg.xml:
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration> <session-factory>
    <property name="myeclipse.connection.profile">VMSDATA</property>
    <property name="connection.url">jdbc:oracle:thin:@localhost:1521:cyc</property>
    <property name="connection.username">vmsuser</property>
    <property name="connection.password">vmsuser</property>
    <property name="connection.driver_class">
    oracle.jdbc.driver.OracleDriver
    </property>
    <property name="dialect">
    org.hibernate.dialect.Oracle9Dialect
    </property>
    <property name="query.factory_class">
    org.hibernate.hql.classic.ClassicQueryTranslatorFactory
    </property>
    <property name="show_sql">false</property>

    <mapping resource="com/TUser.hbm.xml" />

    </session-factory></hibernate-configuration>
      

  2.   

    TUser.hbm.xml
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.TUser" table="T_USER" >
            <id name="yhbm" type="java.lang.String">
                <column name="YHBM" length="11" />
                <generator class="assigned" />
            </id>
            <property name="dlmc" type="java.lang.String">
                <column name="DLMC" length="20" not-null="true" unique="true" />
            </property>
            <property name="swryDm" type="java.lang.String">
                <column name="SWRY_DM" length="11" not-null="true" unique="true" />
            </property>
            <property name="mm" type="java.lang.String">
                <column name="MM" length="60" />
            </property>
            <property name="mrsh" type="java.lang.String">
                <column name="mrsh" length="4000" />
            </property>
        </class>
    </hibernate-mapping>
    TUser.java:
    package com;/**
     * TUser generated by MyEclipse Persistence Tools
     */public class TUser implements java.io.Serializable { // Fields /**
     * 
     */
    private static final long serialVersionUID = 1L; private String yhbm; private String dlmc; private String swryDm; private String mm; private String mrsh; // Constructors public String getMrsh() {
    return mrsh;
    } public void setMrsh(String mrsh) {
    this.mrsh = mrsh;
    } /** default constructor */
    public TUser() {
    } /** minimal constructor */
    public TUser(String yhbm, String dlmc, String swryDm) {
    this.yhbm = yhbm;
    this.dlmc = dlmc;
    this.swryDm = swryDm;
    } /** full constructor */
    public TUser(String yhbm, String dlmc, String swryDm, String mm) {
    this.yhbm = yhbm;
    this.dlmc = dlmc;
    this.swryDm = swryDm;
    this.mm = mm;
    } // Property accessors public String getYhbm() {
    return this.yhbm;
    } public void setYhbm(String yhbm) {
    this.yhbm = yhbm;
    } public String getDlmc() {
    return this.dlmc;
    } public void setDlmc(String dlmc) {
    this.dlmc = dlmc;
    } public String getSwryDm() {
    return this.swryDm;
    } public void setSwryDm(String swryDm) {
    this.swryDm = swryDm;
    } public String getMm() {
    return this.mm;
    } public void setMm(String mm) {
    this.mm = mm;
    }}
      

  3.   

    麻烦发到我邮箱
    [email protected]
      

  4.   

    并且你的hibernate.cfg.xml的位置要放在src下。
      

  5.   

    log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
    log4j:WARN Please initialize the log4j system properly.
    org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(Ljava.sql.SQLException;Ljava.lang.String;Ljava.lang.String;)Lorg.hibernate.JDBCException;(SQLStateConverter.java:67)
    at org.hibernate.exception.JDBCExceptionHelper.convert(Lorg.hibernate.exception.SQLExceptionConverter;Ljava.sql.SQLException;Ljava.lang.String;Ljava.lang.String;)Lorg.hibernate.JDBCException;(JDBCExceptionHelper.java:43)
    at org.hibernate.loader.Loader.doList(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;)Ljava.util.List;(Loader.java:2148)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;)Ljava.util.List;(Loader.java:2029)
    at org.hibernate.loader.Loader.list(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;Ljava.util.Set;[Lorg.hibernate.type.Type;)Ljava.util.List;(Loader.java:2024)
    at org.hibernate.hql.classic.QueryTranslatorImpl.list(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;)Ljava.util.List;(QueryTranslatorImpl.java:887)
    at org.hibernate.engine.query.HQLQueryPlan.performList(Lorg.hibernate.engine.QueryParameters;Lorg.hibernate.engine.SessionImplementor;)Ljava.util.List;(HQLQueryPlan.java:153)
    at org.hibernate.impl.SessionImpl.list(Ljava.lang.String;Lorg.hibernate.engine.QueryParameters;)Ljava.util.List;(SessionImpl.java:1106)
    at org.hibernate.impl.QueryImpl.list()Ljava.util.List;(QueryImpl.java:79)
    at com.TestConn.main([Ljava.lang.String;)V(TestConn.java:30)
    Caused by: java.sql.SQLException: ORA-00904: "TUSER0_"."MRSH": 无效的标识符 at oracle.jdbc.dbaccess.DBError.throwSqlException(Ljava.lang.String;Ljava.lang.String;I)V(DBError.java:134)
    at oracle.jdbc.ttc7.TTIoer.processError()V(TTIoer.java:289)
    at oracle.jdbc.ttc7.Oall7.receive()V(Oall7.java:573)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(BBI[B[Loracle.jdbc.dbaccess.DBType;[Loracle.jdbc.dbaccess.DBData;I[Loracle.jdbc.dbaccess.DBType;[Loracle.jdbc.dbaccess.DBData;I)V(TTC7Protocol.java:1891)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(Loracle.jdbc.dbaccess.DBStatement;[BLoracle.jdbc.dbaccess.DBDataSet;)[Loracle.jdbc.dbaccess.DBColumn;(TTC7Protocol.java:830)
    at oracle.jdbc.driver.OracleStatement.doExecuteQuery()V(OracleStatement.java:2391)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout()V(OracleStatement.java:2672)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate()I(OraclePreparedStatement.java:589)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery()Ljava.sql.ResultSet;(OraclePreparedStatement.java:527)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(Ljava.sql.PreparedStatement;)Ljava.sql.ResultSet;(AbstractBatcher.java:139)
    at org.hibernate.loader.Loader.getResultSet(Ljava.sql.PreparedStatement;ZZLorg.hibernate.engine.RowSelection;Lorg.hibernate.engine.SessionImplementor;)Ljava.sql.ResultSet;(Loader.java:1669)
    at org.hibernate.loader.Loader.doQuery(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;Z)Ljava.util.List;(Loader.java:662)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;Z)Ljava.util.List;(Loader.java:224)
    at org.hibernate.loader.Loader.doList(Lorg.hibernate.engine.SessionImplementor;Lorg.hibernate.engine.QueryParameters;)Ljava.util.List;(Loader.java:2145)
    ... 7 more
      

  6.   

    其实是这样子的:
    项目本来是另外一台电脑上运行正常的,我把它搬到自己的电脑上,把数据也导进自己电脑上的数据库。
    部署好了运行,登录系统时就报了这个错误:
    org.hibernate.exception.SQLGrammarException: could not execute query
    检查:
    把我电脑上的代码连接到原来环境好的那台电脑的数据库,没有任何问题(由此应该可以确认代码没有问题)
    感觉是数据出了问题,写了jdbc连接(连到自己电脑的数据库),能够查询出表中的数据。hibernate就是查不出来
    真是奇怪了
      

  7.   

    我是楼主
    其实是这样子的:
    项目本来是另外一台电脑上运行正常的,我把它搬到自己的电脑上,把数据也导进自己电脑上的数据库。
    部署好了运行,登录系统时就报了这个错误:
    org.hibernate.exception.SQLGrammarException: could not execute query
    检查:
    把我电脑上的代码连接到原来环境好的那台电脑的数据库,没有任何问题(由此应该可以确认代码没有问题)
    感觉是数据出了问题,写了jdbc连接(连到自己电脑的数据库),能够查询出表中的数据。hibernate就是查不出来
    真是奇怪了
      

  8.   

    首先:检查你的SQL语句,
    其次:看看你的数据库中是否存在这张表!!!
      

  9.   

    Query q = session.createQuery(" from TUser");  单步执行,看看你执行的这条SQL语句是什么!!
      

  10.   

    http://topic.csdn.net/u/20070313/16/bb54cb9b-2e5b-4ef9-be6e-6f59c178daa3.html 在参照一下这个!
      

  11.   

    Hibernate: select tuser0_.YHBM as YHBM0_, tuser0_.DLMC as DLMC0_, tuser0_.SWRY_DM as SWRY3_0_, tuser0_.MM as MM0_, tuser0_.mrsh as mrsh0_ from T_USER tuser0_
      

  12.   

    1. 已经开始执行query了,所以不会是连接池的问题
    2. 根据 Caused by: java.sql.SQLException: ORA-00904: "TUSER0_"."MRSH": 无效的标识符, 请确认你的数据库中的USER是否有字段MRSH。
      

  13.   

    根据 Caused by: java.sql.SQLException: ORA-00904: "TUSER0_"."MRSH": 无效的标识符, 请确认你的数据库中的USER是否有字段MRSH。