【发布时间】:2013-09-15 18:37:37
【问题描述】:
连接类:
public class ConectaSiscart {
static Connection connection = null;
Statement stm = null;
static String serverName = "192.168.0.222"; //caminho do servidor do BD
static String mydatabase ="risabel"; //nome do seu banco de dados
static String url = "jdbc:mysql://" + serverName + "/" + mydatabase;
static String username = "siscart"; //nome de um usuário de seu BD
static String password = "progsis"; //sua senha de acesso
public static Connection getConexao() {
try {
// Carregando o JDBC Driver padrão
Class.forName("com.mysql.jdbc.Driver");
// Configurando a nossa conexão com um banco de dados//
ResultSet results = null;
// connection = DriverManager.getConnection("jdbc:mysql://192.168.0.222/risabel?user=siscart&password=progsis");
connection = DriverManager.getConnection(url, username, password);
System.out.println("Connection é " + connection);
return connection;
} catch (ClassNotFoundException e) { //Driver não encontrado
System.out.println("O driver especificado nao foi encontrado.");
return null;
} catch (SQLException e) {
//Não conseguindo se conectar ao banco
System.out.println("Nao foi possivel conectar ao Banco de Dados.");
e.printStackTrace();
return null;
}
}
}
建立连接的方法,这个方法附加了一个鼠标 lostfocus 事件,并从数据库中返回我想要的项目:
private void puxaemailsiscart() {
ConectaSiscart puxaemail = new ConectaSiscart();
Connection conectadomysql = ConectaSiscart.getConexao();
String servico = null;
if(cboxservico.getSelectedItem() == "Registro de Imóveis") {
servico = "reg_cab";
}
Statement stm = null;
ResultSet results = null;
try {
stm = conectadomysql.createStatement ();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
System.out.println();
results = stm.executeQuery ("SELECT * FROM " + servico + " WHERE protocolo =" + tfProtocolo.getText());
if(results.next()) {
tfEmailParte.setText(results.getString("Email").toString());
} else {
System.out.println("Protocolo nao encontrado");
}
results.close();
stm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println("Closing the connection.");
if (conectadomysql != null) try { conectadomysql.close(); } catch (SQLException ignore) {}
}
}
});
但由于某种原因,在第二次尝试中,它将 org.mysql 更改为 org.sqlite.JDBC
java.sql.SQLException:无效的数据库地址: jdbc:mysql://192.168.0.222/risabel 在 org.sqlite.JDBC.createConnection(JDBC.java:110) 在
org.sqlite.JDBC.connect(JDBC.java:87) 在
java.sql.DriverManager.getConnection(Unknown Source) 在 java.sql.DriverManager.getConnection(Unknown Source) 在 ConectaSiscart.getConexao(ConectaSiscart.java:30) 在 telapprincipal$3.puxaemailsiscart(telapprincipal.java:359) 在 telaprincipal$3.focusLost(telapprincipal.java:350) 在 java.awt.AWTEventMulticaster.focusLost(未知来源)在 java.awt.Component.processFocusEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.KeyboardFocusManager.redispatchEvent(未知来源)在 java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(未知 来源)在 java.awt.DefaultKeyboardFocusManager.dispatchEvent(未知 源)在 java.awt.Component.dispatchEventImpl(未知源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$200(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在 java.awt.EventDispatchThread.run(未知来源)线程中的异常 “AWT-EventQueue-0”java.lang.NullPointerException 在 telapprincipal$3.puxaemailsiscart(telapprincipal.java:367) 在 telaprincipal$3.focusLost(telapprincipal.java:350) 在 java.awt.AWTEventMulticaster.focusLost(未知来源)在 java.awt.Component.processFocusEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.KeyboardFocusManager.redispatchEvent(未知来源)在 java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(未知 来源)在 java.awt.DefaultKeyboardFocusManager.dispatchEvent(未知 源)在 java.awt.Component.dispatchEventImpl(未知源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$200(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在 java.awt.EventDispatchThread.run(未知来源)
为什么我无法理解,我在另一个 .java 文件中有另一个类来与 sql lite 数据库建立连接,但是此时它没有被调用,为什么 eclipse 会出现这个错误?!?!!他认为“首先我使用 org.mysql 工作得很好,现在我将尝试使用 org.sqlite”
:|
【问题讨论】:
-
您无法使用 mysql URL
jdbc:mysql://192.168.0.222/risabel连接到 sqlite 数据库。 -
@SotiriosDelimanolis 它不是一个 sqlite 数据库,但是在第二次尝试中,java 程序认为它是一个 sqlite 程序,但是为什么它在第一次尝试时没有想到,而在第二次尝试中却想到了?
-
你的类路径中有 sqlite.jar 吗?删除它。
-
@SotiriosDelimanolis 但我需要它一段时间,因为我需要另一个按钮,它连接到 sqlite db 以进行另一个查询......我不能在同一个类路径中有 2 个? mysql和sqlite?
-
如果需要,请保留。我不确定为什么会这样。在旁注中,不要将字符串与
==进行比较,使用.equals()。