Apanhando para o sqlite

3 respostas
kaberdock

galera é o seguinte, eu to aprendendo a mexer com sqlite em java, motivo, preciso fazer um programa acessar um banco de dados e para usar o mysql eu preciso de uma conta no lab da facul com privilegios, então to usando o sqlite, eu fiz uma classe que abre o banco de dados e insere valores na tabela materia, se eu inserir por linha de codigo no console, insere deboa, se eu tento pelo programa da um erro que eu vu colocar logo abaixo do código.

o código é este:
[code]import java.sql.*;

public class DBConnection {

private Connection conn;
private Statement stm;

public DBConnection() throws ClassNotFoundException, SQLException{
Class.forName("org.sqlite.JDBC");
this.conn = DriverManager.getConnection("jdbc:sqlite:DBuni.db");
this.stm = conn.createStatement();
}

public void addMateria(String materia, String professor, int cargah){
try{
this.stm = conn.createStatement();
stm.executeUpdate("INSERT INTO materia VALUES("+
materia + ","+
professor + "," +
cargah + ")");
}catch(SQLException e){
e.printStackTrace();
}
}
public void printMat(){
ResultSet rs;
try{
rs = this.stm.executeQuery("SELECT nome"+
" FROM materia");
while(rs.next()){
System.out.println(rs.getString("nome"));
}
}catch(SQLException e){
e.printStackTrace();
}

}
}[\code]

e a tracestack é essa:
java.sql.SQLException: file is encrypted or is not a database
at org.sqlite.DB.ex(DB.java:112)
at org.sqlite.DB.throwex(DB.java:113)
at org.sqlite.DB.prepare(Native Method)
at org.sqlite.Stmt.executeUpdate(Stmt.java:145)
at DBConnection.addMateria(DBConnection.java:17)
at DBUni.main(DBUni.java:14)
java.sql.SQLException: file is encrypted or is not a database
at org.sqlite.DB.ex(DB.java:112)
at org.sqlite.DB.throwex(DB.java:113)
at org.sqlite.DB.prepare(Native Method)
at org.sqlite.Stmt.executeUpdate(Stmt.java:145)
at DBConnection.addMateria(DBConnection.java:17)
at DBUni.main(DBUni.java:15)
java.sql.SQLException: file is encrypted or is not a database
at org.sqlite.DB.ex(DB.java:112)
at org.sqlite.DB.throwex(DB.java:113)
at org.sqlite.DB.prepare(Native Method)
at org.sqlite.Stmt.executeQuery(Stmt.java:135)
at DBConnection.printMat(DBConnection.java:28)
at DBUni.main(DBUni.java:16)

3 Respostas

joede.fadel

Dando um olhada rápida parece que você esqueceu de colocar aspas simples no seu comando sql

stm.executeUpdate("INSERT INTO materia VALUES('"+ materia + "','"+ professor + "'," + cargah + ")");

kaberdock

eu achei o erro mas não sei como trata-lo, o erro acusa que o arquivo naun eh um bancop de dados no entanto eu criei ele por linha de comando no konsole e no konsole ele abre de boa, no entanto não sei pq naun abre no java, teria como eu descobrir se um banco de dados existe ou não através do programa?caso não exista o programa crie ele?

joede.fadel

Com esse 2 cath você sabe se encontrou o banco, ou se o problema se a url do banco está errada e se o banco existe ou se a classe que você utilizou está correta

} catch (ClassNotFoundException e) {
            e.printStackTrace();     
        } catch (SQLException e) {            
            e.printStackTrace();
      
        }
Criado 19 de junho de 2009
Ultima resposta 22 de jun. de 2009
Respostas 3
Participantes 2