Access

Olá,



Estou com o seguinte problema: criei um banco e uma tabela, no programa em java efetuo a conexão, até ai tudo ok… o problema é que se executo uma query simples tipo "SELECT * FROM users" funciona tudo ok ele retorna a tabela e imprime na tela, mas quando executo uma query do tipo "SELECT userid FROM users" ele dá o seguinte erro:



java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Seqüência de agrupamento selecionada não suportada pelo sistema operacional.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6026)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6183)

at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:2489)

at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:329)

at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:244)

at secserv.testesql.SEx3

elect(testesql.java:56)

at secserv.testesql.main(testesql.java:85)



A tabela é simples, tem quatro colunas e uma linha só: userid, matricula, nome e senha. Se alguém puder me ajudar… Obrigado.

Segue o código da aplicação:



import java.sql.;

import java.util.
;



public class testesql

{

private static Statement statement = null;

private static Connection conexao = null;

private String URL = "jdbc:odbc:Tarefas";



public testesql()

{

super();

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conexao = DriverManager.getConnection(URL, "", "");

}

catch (SQLException sql1)

{

sql1.printStackTrace();

conexao = null;

}

catch (ClassNotFoundException clas)

{

System.out.println("Ex2");

clas.printStackTrace();

conexao = null;

}

}



public String Select(String QueryLine)

{



String Output = "";

int columns;

int pos;

try

{



Statement stmt = conexao.createStatement();



System.out.println(QueryLine);

ResultSet rs = stmt.executeQuery(QueryLine);



columns = (rs.getMetaData()).getColumnCount();

while (rs.next())

{

for (pos = 1; pos <= columns; pos++)

{

Output += rs.getObject(pos) + " ";

}

Output += "n";

}



stmt.close();

}

catch (SQLException e)

{

e.printStackTrace();

Output = e.getMessage();

}

return Output;

}



public static void main(String[] args)

{

testesql teste = new testesql();



String query = "SELECT iduser FROM users";

System.out.println(teste.Select(query));

}

}

Ola colega,

estou comecando a usar BDem java agora, mas estava dando uma olhada no seu codigo e me parece que sua SELECT esta com o campo errado. Vc citou acima que o campo eh userid e estah na query iduser.

Se vc ainda naum resolveu o problema, quem sabe seja isto?

Paulada,

sobrou um tempinho e dei uma "mexidinha" no seu codigo, veja como ficou. Aqui funcionou, soh naum tah quebrando linha na exibicao.



import java.sql.;

import java.util.
;



public class testesql

{

private static Statement statement = null;

private static Connection conexao = null;

private String URL = "jdbc:odbc:Tarefas";



public testesql()

{

super();

try

{

//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

conexao = DriverManager.getConnection(URL, "", "");

}

catch (Exception e)

{

System.out.println(e.toString());

System.exit(0);

}

/catch (SQLException sql1)

{

sql1.printStackTrace();

conexao = null;

}

catch (ClassNotFoundException clas)

{

System.out.println("Ex2");

clas.printStackTrace();

conexao = null;

}
/

}



public String Select(String QueryLine)

{



String Output = "";

int columns;

int pos;

try

{



Statement stmt = conexao.createStatement();



//System.out.println(QueryLine);

ResultSet rs = stmt.executeQuery(QueryLine);



columns = (rs.getMetaData()).getColumnCount();

while (rs.next())

{

for (pos = 1; pos <= columns; pos++)



Output += rs.getObject(pos) + " ";

}

Output += "n";





stmt.close();

}

catch (SQLException e)

{

e.printStackTrace();

Output = e.getMessage();

}

return Output;

}



public static void main(String[] args)

{

testesql teste = new testesql();



String query = "SELECT userid, matricula, nome, senha FROM users";

System.out.println(teste.Select(query));

}

}

Utilizei um código de um livro java para fazer o que você fez. Alias o seu código anterior deu uma ajuda boa para eu estudar, valeu! Funciona apenas no prompt, basta compilar. Dá uma espiada:



import java.sql.;

import java.util.
;



public class testesql

{

private static Statement statement = null;

private static Connection conexao = null;

private String URL = "jdbc:odbc:meudb";



public testesql()

{

super();

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conexao = DriverManager.getConnection(URL, "", "");

}

catch (SQLException sql1)

{

sql1.printStackTrace();

conexao = null;

}

catch (ClassNotFoundException clas)

{

System.out.println("Ex2");

clas.printStackTrace();

conexao = null;

}

}



public String Select(String QueryLine)

{



String Output = "";

int columns;

int pos;

try

{



Statement stmt = conexao.createStatement();



System.out.println(QueryLine);

ResultSet rs = stmt.executeQuery(QueryLine);

columns = (rs.getMetaData()).getColumnCount();



while (rs.next())

{

for (pos = 1; pos <= columns; pos++)

{

Output += rs.getObject(pos) + " ";

}

Output += " ";

}



stmt.close();

}

catch (SQLException e)

{

e.printStackTrace();

Output = e.getMessage();

}

return Output;

}



public static void main(String[] args)

{

testesql teste = new testesql();



String query = "SELECT id,nome,turno FROM empregados where nome = ´Francesco´";

System.out.println(teste.Select(query));

}

}

:sunglasses: nauta.bp@ig.com.br