Problemas de Conexão ao Banco de Dados via JDBC

2 respostas
L

Criei um banco de dados em access mesmo para testar.
Cria uma dsn na odbc chamada teste3 com driver access.
Estou usando J2SDK1.4.2_05.
E compilei o seguinte código abaixo:

import java.sql.<em>;

import javax.swing.</em>;

import java.awt.<em>;

import java.awt.event.</em>;

import java.util.*;
public class cadastro extends JFrame {

private Connection cn;

private JTable	   tab;
public cadastro()
{
	String url = "jdbc:obdc:teste3";
	String username = "administrador";
	String password = "";
	
	try {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

		cn = DriverManager.getConnection(url,username,password);
		}
	catch (ClassNotFoundException cnfex) {
		System.err.println("Failed to load JDBC/ODBC driver. ");
		cnfex.printStackTrace();
		System.exit(1);
	}
	catch (SQLException sqlex) {
		System.err.println("Unable to connect");
		sqlex.printStackTrace();
	}
	
	getTable();

	setSize(450,150);
	show();

}

private void getTable()
{
	Statement st;
	ResultSet rs;
	
	try {
		String query = "SELECT * FROM T_PAIS";
		
		st = cn.createStatement();
		rs = st.executeQuery(query);
		displayResultSet(rs);
		st.close();			
	}
	catch (SQLException sqlex) {
		sqlex.printStackTrace();
	}
}

private void displayResultSet (ResultSet rsd) 
throws SQLException
{
	boolean moreRecords = rsd.next();
	
	if (!moreRecords) {
		JOptionPane.showMessageDialog(this,"Sem registros");
		setTitle("Sem registros");
		return;
	}

	setTitle("Pais");
	
	Vector columnHeads = new Vector();
	Vector rows = new Vector();
	
	try {
		ResultSetMetaData rsmd = rsd.getMetaData();
		
		for (int i=1;i&lt;rsmd.getColumnCount();i++)
			columnHeads.addElement(rsmd.getColumnName(i));

		do {
			rows.addElement(getNextRow(rsd,rsmd));
		} while (rsd.next());

		tab = new JTable(rows,columnHeads);
		JScrollPane scroller = new JScrollPane(tab);
	
		getContentPane().add(
			scroller, BorderLayout.CENTER);
	
		validate();			
	}
	catch (SQLException sqlex) {
		sqlex.printStackTrace();

	}

}

private Vector getNextRow (ResultSet rs,
			   ResultSetMetaData rsmd)
throws SQLException
{
	Vector currentRow = new Vector();
	for (int i=1;i&lt;rsmd.getColumnCount();++i)
		switch (rsmd.getColumnType(i)){
			case Types.VARCHAR:
					currentRow.addElement(rs.getString(i));
				break;
			case Types.INTEGER:
					currentRow.addElement(new Long(rs.getLong(i)));
				break;
			default:
				System.out.println("Type was :" + rsmd.getColumnTypeName(i));
		}
	return currentRow;			
}

public void ShutDown()
{
	try {
		cn.close();
	}
	catch (SQLException sqlex) {
		System.err.println("Unable to disconnect");
		sqlex.printStackTrace();
	}
}

public static void main (String args[])
{
	final cadastro app = new cadastro();
	
	app.addWindowListener(
		new WindowAdapter(){
			public void windowClosing (WindowEvent e)
			{
				app.ShutDown();
				System.exit(0);
			}					
		}
	);
}

}

Compila legal.
Mas na hora que rodo dá o seguinte erro:

Unable to connect

java.sql.SQLException: No suitable driver

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at cadastro.(cadastro.java:20)

at cadastro.main(cadastro.java:130)

Exception in thread main java.lang.NullPointerException

at cadastro.getTable(cadastro.java:47)

at cadastro.(cadastro.java:32)

at cadastro.main(cadastro.java:130)

2 Respostas

Ironlynx

Ele não está encontrando o driver pq vc pôs:

E não seria
String url = “jdbc:odbc:teste3”; :wink:

L

Cara, valeu obrigado.
Tem horas que as coisas mais simples não enxergamos.

Criado 18 de outubro de 2004
Ultima resposta 18 de out. de 2004
Respostas 2
Participantes 2