Erro no acesso ao Banco de Dados Access

3 respostas
R

Galera, estou com o seguinte problema. Estou me conectando ao MS Access porém estou tomando um erro abaixo:

[Microsoft][ODBC Driver Manager] Estado de cursor inválido

Abaixo a forma de conexão:

public Dao() throws SQLException

{

try

{

String local = System.getProperty(“user.dir”);

local += “\Produtos.mdb”;
// Carregando o driver JdbcOdbcDriver 
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  // Abrindo uma Connection. Note que o nome do driver deve 
  // ser o mesmo disponivel na lista de drives que podem ser 
  // usados para definir uma DSN.O parametro DBQ que indica 
  // o local do arquivo. Eis o pulo do gato. :-) 
  conn = DriverManager.getConnection("jdbc:odbc:Driver=" + 
         "{Microsoft Access Driver (*.mdb)};" + 
         "DBQ=" + local ,"",""); 
  conn.setAutoCommit(false); // explicitando o modo     
}
catch(Exception ex) { 
  ex.printStackTrace(); 
}

}

E esta é a consulta:

public int geraCodSequencial()

{

int maxCod = 0;

try

{

String SQLGeraCodSequencial = "SELECT MAX(codigo) " +

FROM produtos;

pstm = conn.prepareStatement(SQLGeraCodSequencial);

rs = pstm.executeQuery();
maxCod = rs.getInt(1);      
}
catch(Exception e)
{
  System.out.println("Ocorreu o seguinte erro durante a leiutra: " + e.getMessage());
}
return maxCod;

}

Alguém já tomou este erro? É a primeira vez que venhi ao fórum e devo dizer que é realmente muito bom. Parabéns e Valeu.

3 Respostas

S

antes de vc usar algum dos métodos get de ResultSet vc deve chamar o método next() do ResultSet.

exemplo para iterar sobre o ResultSet:

while (rs.next()) {
    System.out.println("valor: " + rs.getInt(1));
}
D

soh uma perguntinha…jah que tu estais usando o Access, ao inves de passar trabalho buscando o max e incrementando…pq tu naum usao o tipo autoincremente do access???

[]'s

R

Seuparada e Diana, muitíssimo obrigado. Fiz as duas coisas que vocês me falaram, o código está funcionando perfeitamente. Valeu mesmo e abraços.

Criado 9 de julho de 2004
Ultima resposta 10 de jul. de 2004
Respostas 3
Participantes 3