JDBC no Excel

Estou tentando fazer uma conexão JDBC com uma planilia no excel, mas ta dando erro no executeQuery (select).
Erro na linha em vermelho.

Codigo

import java.io.;
import java.net.
;
import java.sql.;
import java.util.
;

public class BancoExcel{
public static final String DRIVER_NAME =
“sun.jdbc.odbc.JdbcOdbcDriver”;
public static final String DATABASE_URL = “jdbc:odbc:Excel”;

public static void main(String[] args)
throws ClassNotFoundException, SQLException{
Class.forName(DRIVER_NAME);
Connection con = null;
try {
con = DriverManager.getConnection(DATABASE_URL);
Statement stmt = con.createStatement();
[color=red]ResultSet rs = stmt.executeQuery (“select lastname, firstname, id from [Sheet1$]”);[/color]
while (rs.next()) {
String lname = rs.getString(1);
String fname = rs.getString(2);
int id = rs.getInt(3);

        System.out.println(fname + " " + lname + "  id : " + id);
     }
     rs.close();
     stmt.close();
  }
  finally {
     if (con != null)
        con.close();
  }

}
}

Erro : Exception in thread “main” java.sql.SQLException: [Microsoft][Driver ODBC para Excel] ‘Sheet1$’ não é um nome válido. Certifique-se de que ele inclua somente caracteres ou pontuação válidos e de que não seja longo demais.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at Exemplo.BancoExcel.main(BancoExcel.java:20)

Esse comando SQL para selecionar os dados está correto?
Esse exemplo ei peguei aqui no portal java, to fazendo igual !!!

acho que a mensagem de erro foi bem clara…o problema está no nome de sua tabela na select. Não sei do que se trata sua tabela, mas provavelmete o nome dela é só Sheet1

[quote=arm.jr]peguei aqui no portal java[/quote] :shock:

Valeu !!

Era Plan1

Como faço para inserir os dados numa planilia do excel.

Tentei fazer assim, mas deu erro!!

Statement stmt = con.createStatement();
stmt.executeUpdate(“INSERT INTO [Plan1$] (lastname, firstname, id) VALUES (‘CONSEGUI’,‘HEHEHEHEH’,51)”);

ERRO

Exception in thread “main” java.sql.SQLException: [Microsoft][Driver ODBC para Excel] A operação deve usar uma consulta atualizável.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
at Exemplo.BancoExcel2.main(BancoExcel2.java:20)

Cara pergunta,

Vc consguiu né, como vc cria não estou conseguindo criar…um tabela na planilha…

public static final String DRIVER_NAME = “sun.jdbc.odbc.JdbcOdbcDriver”;

public static final String DATABASE_URL = "jdbc:odbc:BancoJava";

public static void main(String[] args) throws ClassNotFoundException,
		SQLException {
	Class.forName(DRIVER_NAME);
	Connection con = null;
	try {
		con = DriverManager.getConnection(DATABASE_URL);
		Statement stmt = con.createStatement();
		//ResultSet rs = stmt.executeQuery("select lastname, firstname, id from [codigo$]");
		ResultSet rs = stmt.executeQuery("create table codigos(id int )");
		while (rs.next()) {
			String lname = rs.getString(1);
			String fname = rs.getString(2);
			int id = rs.getInt(3);

			System.out.println(fname + " " + lname + " id : " + id);
		}
		rs.close();
		stmt.close();
	} finally {
		if (con != null)
			con.close();
	}
}

erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Excel] O mecanismo de banco de dados Microsoft Jet não pôde encontrar o objeto ‘codigos’. Certifique-se de que o objeto exista e de ter digitado seu nome e o caminho corretamente.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at Conexao.main(Conexao.java:21)
Exception in thread “main”

Boa Tarde

Porque ao gravar um inteiro no banco ele grava com uma aspa simples no inicio impossibilitando o excell trabalhar como numerico.
Gravando “…values(1,‘123123’)” no excell fica '1 na coluna do numero.
e preciso trabalhar com esse numero no excell.

[]s

[quote=arm.jr]Como faço para inserir os dados numa planilia do excel.

Tentei fazer assim, mas deu erro!!

Statement stmt = con.createStatement();
stmt.executeUpdate(“INSERT INTO [Plan1$] (lastname, firstname, id) VALUES (‘CONSEGUI’,‘HEHEHEHEH’,51)”);

[/quote]

Olá arm.jr,

Tente fazer assim e me diga o resultado:

Statement stmt = con.createStatement(); stmt.executeUpdate("INSERT INTO Plan1 (lastname, firstname, id) VALUES ('CONSEGUI','HEHEHEHEH',51)");
Em um outro post vc disse que o nome da planilha é Plan1, tomei isso como base.

Abraço! :thumbup:

[quote=ibimon]Cara pergunta,

Vc consguiu né, como vc cria não estou conseguindo criar…um tabela na planilha…

public static final String DRIVER_NAME = “sun.jdbc.odbc.JdbcOdbcDriver”;

public static final String DATABASE_URL = "jdbc:odbc:BancoJava";

public static void main(String[] args) throws ClassNotFoundException,
		SQLException {
	Class.forName(DRIVER_NAME);
	Connection con = null;
	try {
		con = DriverManager.getConnection(DATABASE_URL);
		Statement stmt = con.createStatement();
		//ResultSet rs = stmt.executeQuery("select lastname, firstname, id from [codigo$]");
		ResultSet rs = stmt.executeQuery("create table codigos(id int )");
		while (rs.next()) {
			String lname = rs.getString(1);
			String fname = rs.getString(2);
			int id = rs.getInt(3);

			System.out.println(fname + " " + lname + " id : " + id);
		}
		rs.close();
		stmt.close();
	} finally {
		if (con != null)
			con.close();
	}
}

erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Excel] O mecanismo de banco de dados Microsoft Jet não pôde encontrar o objeto ‘codigos’. Certifique-se de que o objeto exista e de ter digitado seu nome e o caminho corretamente.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at Conexao.main(Conexao.java:21)
Exception in thread “main” [/quote]

Olá amigo ibimon,

Sou novo em JAVA e ainda mais em JDBC/ODBC, comecei a ler sobre banco de dados ontem e pelo que aprendi já, o erro está claro no seu código. Vamos lá:

O método executeQuery(), que vc está usando, é usado para acessar o banco de dados, para modificá-lo vc deve usar o método executeUpdate(), portanto vc deveria fazer da seguite forma:

01 public static void main(String[] args) throws ClassNotFoundException, 
02     SQLException { 
03     Class.forName(DRIVER_NAME); 
04     Connection con = null; 
05     try { 
06         con = DriverManager.getConnection(DATABASE_URL); 
07         Statement stmt = con.createStatement(); 
08         //ResultSet rs = stmt.executeQuery("select lastname, firstname, id from [codigo$]"); 
09         ResultSet rs = stmt.executeUpdate("CREATE TABLE codigos(id int)"); 
10         while (rs.next()) { 
11             String lname = rs.getString(1); 
12             String fname = rs.getString(2); 
13             int id = rs.getInt(3);
14             System.out.println(fname + " " + lname + " id : " + id); 
15         } 
16         rs.close(); 
17         stmt.close(); 
18     } finally { 
19         if (con != null) 
20             con.close(); 
21     } 
22 }

Note a mudança foi feita na linha 09 ([color=red]ResultSet rs = stmt.executeUpdate(“CREATE TABLE codigos(id int)”);[/color]), lembre-se de usar os comandos em CAIXA ALTA.

Veja se funciona e diga-nos o resultado.

Abraço!

Desculpe-me estar retornando este questionamento tão antigo, mas estou precisando de algumas informações:

Estou criando um programa java e gostaria que ele se comunicasse com uma planilha excel que tenho!

minhas dúvidas:

  1. Conexão:
    public static final String DATABASE_URL = “jdbc:odbc:BancoJava”; //aqui é o nome do banco de dados é?

  2. onde eu tenho que colocar a planilha excel? dentro do projeto netbeans?

conseguiiiiiiiiiiiii! conectar com o excel!

:smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

esse post me ajudou muiiiiiiiiiiiito!

muito simples, fiz e deu certo!

Valeu gente!