JDBC no Excel

9 respostas
arm.jr

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 <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;

import java.sql.<em>;

import java.util.</em>;
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 !!!

9 Respostas

rodrigo_gomes

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

arm.jr:
peguei aqui no portal java
:shock:

arm.jr

Valeu !!

Era Plan1

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)”);

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)
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
janocrema

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

Vingdel

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)”);

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:

Vingdel

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 </blockquote>

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!

SandroSoftwares

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?

SandroSoftwares

conseguiiiiiiiiiiiii! conectar com o excel!

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

esse post me ajudou muiiiiiiiiiiiito!

muito simples, fiz e deu certo!

Valeu gente!

Criado 19 de junho de 2005
Ultima resposta 29 de abr. de 2011
Respostas 9
Participantes 6