I'm trying to use Sqlite, jdbc under Eclipse Luna & Windows 7.
Everything works fine when I use absolute path to the Sqlite database but when relative path used I get this error:
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database.
I spent some time Googling this problem and the answer is: Yes you can use relative path with jdbc connection. However it does not work for me.
My code:
package PortiaMoxy;
import static net.mindview.util.Print.*;
String inPath; // incoming file
String outPath; // converted file from incoming file
public File() {
// Connect to Sqlite db
Connection c = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("org.sqlite.JDBC");
//
// This connection works fine
//
//c = DriverManager.getConnection("jdbc:sqlite:/JavaProjects/workspace/Polymorphism/sources/PortiaMoxy/moxyimport.sqlite");
//
// This connection doesn't work. ???
//
c = DriverManager.getConnection("jdbc:sqlite:moxyimport.sqlite");
c.setAutoCommit(false);
print("File(): Opened database successfully.");
stmt = c.createStatement();
String query = "select ID \"id\", VALUE \"value\"";
query += "from infiles;";
rs = stmt.executeQuery(query);
if (!rs.isBeforeFirst() ) {
System.out.println("No data");
}
while(rs.next()) {
String id = rs.getString(1);
String value = rs.getString(2);
print(" ID = " + id + " Value = " + value);
} // end of while
rs.close();
stmt.close();
c.close();
} // end of try
catch (SQLException ex) {
print(ex.getClass().getName() + ": " + ex.getMessage());
System.exit(0);
}
catch (Exception e ) {
print(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
} // end of class
public int convert() {
print(what());
print("Generic convert");
return 0;
}
public String what() {
return "File";
}
}
解决方案
Put your database within the following folder and try again with relative path:
/JavaProjects/workspace/Polymorphism
This should work.