Java org.h2.jdbc.JdbcSQLException:Table";Pacchetti Visiteturistiche“;未找到;SQL语句:
我正在使用eclipse为一个项目实现一段代码。 我被要求做的一个特性是找出是否有两个值在数据库表中(使用h2创建)。 所有这些都必须通过使用DAO类和在主类和DAO类之间传递的管理器类来实现。 我的问题是,通过这样做,总是会引发一个异常,告诉我没有找到“数据包列表”表。 但这不能是因为:Java org.h2.jdbc.JdbcSQLException:Table";Pacchetti Visiteturistiche“;未找到;SQL语句:,java,sql,eclipse,jdbc,h2,Java,Sql,Eclipse,Jdbc,H2,我正在使用eclipse为一个项目实现一段代码。 我被要求做的一个特性是找出是否有两个值在数据库表中(使用h2创建)。 所有这些都必须通过使用DAO类和在主类和DAO类之间传递的管理器类来实现。 我的问题是,通过这样做,总是会引发一个异常,告诉我没有找到“数据包列表”表。 但这不能是因为: 我在数据库里查过了,有一张表 数据库已与eclipse正确连接 如果我实现了主表中的所有函数,那么表就会被识别 这些是课程: import java.sql.Connection; import ja
- 我在数据库里查过了,有一张表
- 数据库已与eclipse正确连接
- 如果我实现了主表中的所有函数,那么表就会被识别李>
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DaoPacchetti {
public static boolean Ricerca(String citta, String periodo ) throws SQLException{
boolean verifica=false;
PreparedStatement stat=null;
ResultSet rs=null;
Connection con=null;
con= DBManager.getConnection();
stat=con.prepareStatement("SELECT * FROM pacchettivisiteturistiche "
+ " WHERE citta=? AND disponibilitaSottoscrizione=?");
stat.setString(1, citta);
stat.setString(2, periodo);
rs=stat.executeQuery();
if(rs.next()){
verifica=true;
}
//rs.close();
//stat.close();
con.close();
return verifica;
}
}
经理级:
import dao.DaoPacchetti;
//import dao.DAOException;
import java.sql.SQLException;
public class GestorePacchetti {
private static GestorePacchetti istance;
public static GestorePacchetti getIstance() {
if (istance == null)
istance = new GestorePacchetti();
return istance;
}
public boolean RicercaPacchetto(String citta,String periodo){
boolean trovato=false;
try{
trovato=DaoPacchetti.Ricerca(citta, periodo);
return trovato;
}
catch(SQLException e){
System.err.println("errore nella ricerca del pacchetto");
e.printStackTrace();
}
return trovato;
}
}
import java.sql.Connection;
public class DBManager {
protected static Connection conn;
final protected static ConnectionFactory CONNECTION_FACTORY=new
H2ConnectionFactory();
public static Connection getConnection(){
if (conn == null) {
try {
conn = CONNECTION_FACTORY.createConnection();
} catch(Exception e) {
e.printStackTrace();
}
}
return conn;
}
}
主要类别:
import pacchetti.GestorePacchetti;
import java.util.Scanner;
public class Terminale {
public static void main(String[] args) {
boolean trovato;
String citta;
String codice_pacchetto;
String data;
String nPartecipantistringa;
int nPartecipanti;
GestorePacchetti g= GestorePacchetti.getIstance();
System.out.println("immetti la città e la data per la ricerca del pacchetto
delle visite turistiche");
Scanner input = new Scanner(System.in);
do{
System.out.println("immetti prima la citta");
citta = input.nextLine();
System.out.println("ora immetti la data");
data=input.nextLine();
trovato=g.RicercaPacchetto(citta, data);
if(trovato==false)
System.out.println("Reinserire i parametri per favore");
}while(trovato==false);
System.out.println("Trovato!!");
}
}
我还编写了包含整个函数的主函数,而不调用其他类(这里可以识别表):
DBManager
Class:
import java.sql.Connection;
public class DBManager {
protected static Connection conn;
final protected static ConnectionFactory CONNECTION_FACTORY=new
H2ConnectionFactory();
public static Connection getConnection(){
if (conn == null) {
try {
conn = CONNECTION_FACTORY.createConnection();
} catch(Exception e) {
e.printStackTrace();
}
}
return conn;
}
}
连接工厂
:
public interface ConnectionFactory {
java.sql.Connection createConnection() throws Exception;
}
import java.sql.DriverManager;
public class H2ConnectionFactory implements ConnectionFactory {
protected final static String DB_PATH= "./test";
protected final static String CONNECTION_STRING = "jdbc:h2:" + DB_PATH ;
@Override
public java.sql.Connection createConnection() throws Exception {
Class.forName("org.h2.Driver");
return DriverManager.getConnection(CONNECTION_STRING, "sa", "12345");
}
}
这是提出的例外情况:
org.h2.jdbc.JdbcSQLException: Table "PACCHETTIVISITETURISTICHE" not found;
SQL statement:
SELECT * FROM pacchettivisiteturistiche WHERE citta=? AND
disponibilitaSottoscrizione=? [42102-195]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.command.Parser.readTableOrView(Parser.java:5506)
at org.h2.command.Parser.readTableFilter(Parser.java:1260)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1940)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2089)
at org.h2.command.Parser.parseSelectSub(Parser.java:1934)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1749)
at org.h2.command.Parser.parseSelect(Parser.java:1737)
at org.h2.command.Parser.parsePrepared(Parser.java:448)
at org.h2.command.Parser.parse(Parser.java:320)
at org.h2.command.Parser.parse(Parser.java:292)
at org.h2.command.Parser.prepareCommand(Parser.java:257)
at org.h2.engine.Session.prepareLocal(Session.java:573)
at org.h2.engine.Session.prepareCommand(Session.java:514)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:73)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288)
at dao.DaoPacchetti.Ricerca(DaoPacchetti.java:22)
at pacchetti.GestorePacchetti.RicercaPacchetto(GestorePacchetti.java:21)
at ui.Terminale.main(Terminale.java:30)
org.h2.jdbc.JdbcSQLException:未找到表“PACCHETTIVISITETURISTICHE”;
SQL语句:
从pacchettivisiteturistiche中选择*其中citta=?及
disponibilitasottostrizione=?[42102-195]
位于org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
位于org.h2.message.DbException.get(DbException.java:179)
位于org.h2.message.DbException.get(DbException.java:155)
位于org.h2.command.Parser.readTableOrView(Parser.java:5506)
位于org.h2.command.Parser.readTableFilter(Parser.java:1260)
位于org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1940)
位于org.h2.command.Parser.parseSelectSimple(Parser.java:2089)
位于org.h2.command.Parser.parseSelectSub(Parser.java:1934)
位于org.h2.command.Parser.parseSelectUnion(Parser.java:1749)
位于org.h2.command.Parser.parseSelect(Parser.java:1737)
位于org.h2.command.Parser.parsePrepared(Parser.java:448)
位于org.h2.command.Parser.parse(Parser.java:320)
位于org.h2.command.Parser.parse(Parser.java:292)
位于org.h2.command.Parser.prepareCommand(Parser.java:257)
位于org.h2.engine.Session.prepareLocal(Session.java:573)
位于org.h2.engine.Session.prepareCommand(Session.java:514)
位于org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
在org.h2.jdbc.JdbcPreparedStatement。(JdbcPreparedStatement.java:73)
在org.h2.jdbc.JdbcConnection.prepareStatement上(JdbcConnection.java:288)
在dao.DaoPacchetti.Ricerca(DaoPacchetti.java:22)
在pacchetti.GestorePacchetti.RicercaPacchetto(GestorePacchetti.java:21)
位于ui.Terminale.main(Terminale.java:30)
好的,但我不确定错误是否在这里,因为在函数工作的主类中,我使用了相同的DBManager类。
这是我的DBManager类:
import dao.DaoPacchetti;
//import dao.DAOException;
import java.sql.SQLException;
public class GestorePacchetti {
private static GestorePacchetti istance;
public static GestorePacchetti getIstance() {
if (istance == null)
istance = new GestorePacchetti();
return istance;
}
public boolean RicercaPacchetto(String citta,String periodo){
boolean trovato=false;
try{
trovato=DaoPacchetti.Ricerca(citta, periodo);
return trovato;
}
catch(SQLException e){
System.err.println("errore nella ricerca del pacchetto");
e.printStackTrace();
}
return trovato;
}
}
import java.sql.Connection;
public class DBManager {
protected static Connection conn;
final protected static ConnectionFactory CONNECTION_FACTORY=new
H2ConnectionFactory();
public static Connection getConnection(){
if (conn == null) {
try {
conn = CONNECTION_FACTORY.createConnection();
} catch(Exception e) {
e.printStackTrace();
}
}
return conn;
}
}
这是ConnectorFactory的接口和类:
public interface ConnectionFactory {
java.sql.Connection createConnection() throws Exception;
}
import java.sql.DriverManager;
public class H2ConnectionFactory implements ConnectionFactory {
protected final static String DB_PATH= "./test";
protected final static String CONNECTION_STRING = "jdbc:h2:" + DB_PATH ;
@Override
public java.sql.Connection createConnection() throws Exception {
Class.forName("org.h2.Driver");
return DriverManager.getConnection(CONNECTION_STRING, "sa", "12345");
}
}
好的,但我不确定错误是否在这里,因为在函数工作的主类中,我使用了相同的DBManager类。 这是我的DBManager类:
import dao.DaoPacchetti;
//import dao.DAOException;
import java.sql.SQLException;
public class GestorePacchetti {
private static GestorePacchetti istance;
public static GestorePacchetti getIstance() {
if (istance == null)
istance = new GestorePacchetti();
return istance;
}
public boolean RicercaPacchetto(String citta,String periodo){
boolean trovato=false;
try{
trovato=DaoPacchetti.Ricerca(citta, periodo);
return trovato;
}
catch(SQLException e){
System.err.println("errore nella ricerca del pacchetto");
e.printStackTrace();
}
return trovato;
}
}
import java.sql.Connection;
public class DBManager {
protected static Connection conn;
final protected static ConnectionFactory CONNECTION_FACTORY=new
H2ConnectionFactory();
public static Connection getConnection(){
if (conn == null) {
try {
conn = CONNECTION_FACTORY.createConnection();
} catch(Exception e) {
e.printStackTrace();
}
}
return conn;
}
}
这是ConnectorFactory的接口和类:
public interface ConnectionFactory {
java.sql.Connection createConnection() throws Exception;
}
import java.sql.DriverManager;
public class H2ConnectionFactory implements ConnectionFactory {
protected final static String DB_PATH= "./test";
protected final static String CONNECTION_STRING = "jdbc:h2:" + DB_PATH ;
@Override
public java.sql.Connection createConnection() throws Exception {
Class.forName("org.h2.Driver");
return DriverManager.getConnection(CONNECTION_STRING, "sa", "12345");
}
}
jdbc:h2:~/test”、“sa”、“password”
或jdbc:h2:file:~/test;USER=sa;password=password
请尝试这些连接字符串中的任何一个。jdbc:h2:file:~/test;用户=sa;密码=密码
试试这些连接字符串。确保你不必使用
schemaName.TableName
并且你提到了正确的数据库我也尝试过这样做,但情况没有改变发布你的DBManager类确保你不必使用schemaName.TableName
并且你提到了正确的数据库我也尝试过这样做,但是这种情况并没有改变,在发布您的DBManager类时,请尝试以下任何连接字符串。我使用了“jdbc:h2:~/test”、“sa”、“password”或jdbc:h2:file:~/test;USER=sa;password=password
“而不是连接字符串,它工作了。这是怎么可能的???问题在于
仅限:)以及为什么如果我使用主类,而整个实现都使用同一个DBManager,它就可以工作?无论如何,非常感谢,您救了我。jdbc:h2:~/test”、“sa”、“password”
或jdbc:h2:file:~/test;USER=sa;password=password
尝试这些连接字符串中的任何一个。我使用了“jdbc:h2:~/test”“而不是连接字符串,它工作了。这是怎么可能的???问题在于
仅限:)以及为什么如果我使用主类,而整个实现都使用同一个DBManager,它就可以工作?无论如何,非常感谢,你救了我。