Problemas de Conexão ao Banco de Dados via JDBC

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.;
import javax.swing.
;
import java.awt.;
import java.awt.event.
;
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<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<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)

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

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

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