Ajuda com mysql(acesso a tabelas)

6 respostas
A

O banco Access usa tabelas específicas (do sistema) para armazenar informações sobre as tabelas de um banco.
Em MySQL, essas tabelas não existem como resolver este problema?? Quais os comandos devo colocar na classe?

A class é esta:

/*
 * MySQLSistemaTabelaDAO.java 
 */

package redoc.inventario.arquitetura;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Collection;

import persistencia.dao.MySQLSistemaDAOFactory;
import redoc.metrica.ETipoMetrica;
import redoc.sistema.ESistema;

/** Classe que implementa a interface SistemaTabelaDAO para persistencia da 
 * tabela contendo o schema do banco de dados do sistema que esta sendo analisado,
 * caso seja implementado para MySQL.
 */

public class MySQLSistemaTabelaDAO implements SistemaTabelaDAO {
    
    private MySQLSistemaDAOFactory vFabricaMySQL = null;
    
	/** Constrói uma nova instancia de MySQLSistemaTabelaDAO a partir da fábrica do 
	 * sistema que está sendo analisado, caso seja para banco MySQL.
	 * @param pFabricaMySQL Fábrica de fontes de dados para bancos de dados MySQL.
	 */
	public MySQLSistemaTabelaDAO(MySQLSistemaDAOFactory pFabricaMySQL) {
		this.vFabricaMySQL = pFabricaMySQL;
	}

    /** Método que carrega todas as tabelas do schema do banco de dados da fonte
     * específica.
     * @param pSistema Sistema que terá seu banco de dados acessados para que se
     * capture as tabelas.
     * @param pColecao Coleção que armazenará todas as tabelas contidas na fonte de dados.
     */
   public boolean pegaColecaoTabela(ESistema pSistema, Collection pColecao)
			throws Exception {
		Connection conn = getDataSource(pSistema);
		
		
		if (conn != null) {
		    String sql = "select name "
		        + "from msysobjects "
		        + "where type = ? and name not like ?";
		
		    PreparedStatement ps = conn.prepareStatement(sql);
		    ps.setInt(1, 1);
		    ps.setString(2, "msys%");
		    
		    ResultSet rs = ps.executeQuery();
		    
		    while (rs.next()) {
		        ETabela tabela = new ETabela();
		        
		        tabela.setNomeElemento(rs.getString("name"));
		        tabela.setCodigoSistema(pSistema.getCodigoSistema());
		        tabela.setCodigoTipo(ETipoMetrica.TABELA);
		
		        pColecao.add(tabela);
		    }    
		    rs.close();
		    ps.close();
		    conn.close();
		}
		return true;
	}    

    /** Método que retorna uma conexao com a fonte de dados do sistema que está
     * sendo analisado.
     * @return Conexão com a fonte de dados.
     */
    private Connection getDataSource(ESistema pSistema) {
        return vFabricaMySQL.createConnection(pSistema);
    }   
}

:cry:

[size=“9”][color=“green”]*Editado para adicionar BBCode ;)[/color][/size]

6 Respostas

J

Oi

Angra, não entendi muito bem… O Fato das tabelas não existirem, quer dizer que tu vai ter que cria-las ou tu vai ter que usar outras no lugar das que não existem?

T+

R

humn, não seria o comando “show tables” que mostra as tabelas dentro do banco??? :lol:

A

:roll:
As tabelas ja estão criadas uso webmim ja intalei o mysql-connector-java-3.1.3-beta-bin.jar e as tabelas são acessadas corretamente.
Mas quero saber este comando correspondente em mysql:

String sql = "select name "

  • "from msysobjects "
  • “where type = ? and name not like ?”;

msysobjects é uma classe interna do access e na classe seria somente eu colocar show tables??
Vou tentar :idea:

S

Olá,

SHOW TABLE STATUS

nada como um manual! Acostume-se a incluir o que a web oferece no seu bookmark!

bob

A

:roll:
Acho que não sei como usar isso corretamente :sad: …pois gerou o seguinte erro:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

Eu fiz assim:

String sql = " SHOW TABLE STATUS from redoc ";

//onde, redoc é o nome do banco;
// fiz sem o nome do banco e deu o mesmo erro!!

:sad: :roll:

M

Angra,
Não sei se estou falando besteira mais se tratando de mysql para vc definir o banco a ser utilizado eu uso o comando "use nome_base"
Tipo tenho uma base de dados chamada CadGeral , para saber qual eu vou usar logo que abro o meu mysql eu uso o comando

Espero que seja isso o que vc precisa…
Até mais…

Criado 21 de setembro de 2004
Ultima resposta 29 de out. de 2004
Respostas 6
Participantes 5