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;
}
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;
}
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>
<?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;
}}
[email protected]
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
项目本来是另外一台电脑上运行正常的,我把它搬到自己的电脑上,把数据也导进自己电脑上的数据库。
部署好了运行,登录系统时就报了这个错误:
org.hibernate.exception.SQLGrammarException: could not execute query
检查:
把我电脑上的代码连接到原来环境好的那台电脑的数据库,没有任何问题(由此应该可以确认代码没有问题)
感觉是数据出了问题,写了jdbc连接(连到自己电脑的数据库),能够查询出表中的数据。hibernate就是查不出来
真是奇怪了
其实是这样子的:
项目本来是另外一台电脑上运行正常的,我把它搬到自己的电脑上,把数据也导进自己电脑上的数据库。
部署好了运行,登录系统时就报了这个错误:
org.hibernate.exception.SQLGrammarException: could not execute query
检查:
把我电脑上的代码连接到原来环境好的那台电脑的数据库,没有任何问题(由此应该可以确认代码没有问题)
感觉是数据出了问题,写了jdbc连接(连到自己电脑的数据库),能够查询出表中的数据。hibernate就是查不出来
真是奇怪了
其次:看看你的数据库中是否存在这张表!!!
2. 根据 Caused by: java.sql.SQLException: ORA-00904: "TUSER0_"."MRSH": 无效的标识符, 请确认你的数据库中的USER是否有字段MRSH。