自动将org.mysql更改为org.sqlite

编程入门 行业动态 更新时间:2024-10-13 20:16:52
本文介绍了自动将org.mysql更改为org.sqlite的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

连接类:

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事件,并从我想要的数据库中返回该项目:

Method to do the connection, this method is attached a mouse lostfocus event, and return the item from database that i want:

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

but for some reason, in second try, it change the org.mysql, to org.sqlite.JDBC

java.sql.SQLException:无效的数据库地址: jdbc: mysql://192.168.0.222/risabel at org.sqlite.JDBC.createConnection(JDBC.java:110)at

org.sqlite.JDBC.connect(JDBC.java:87)

java.sql.DriverManager.getConnection(未知来源)at at java.sql.DriverManager.getConnection(未知来源) ConectaSiscart.getConexao(ConectaSiscart.java:30) telaprincipal $ 3.puxaemailsiscart(telaprincipal.java:359)at telaprincipal $ 3.focusLost(telaprincipal.java:350)at java.awt.AWTEventMulticaster.focusLost(Unknown Source)at java.awt.Component.processFocusEvent(Unknown Source)at java .awt.Component.processEvent(未知来源)at java.awt.Container.processEvent(Unkn来自的java.awt.Component.dispatchEventImpl(未知来源) java.awt.Container.dispatchEventImpl(未知来源) java.awt.Component.dispatchEvent(未知来源) ) java.awt.KeyboardFocusManager.redispatchEvent(未知来源)at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown $ b $) b来源)at 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(未知来源)at java.set.EventQueue $ 3.run(未知来源)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ 1.doIntersecti onPrivilege(Unknown Source)at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue $ 4.run(Unknown Source)at java。 awt.EventQueue $ 4.run(未知来源)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source)at java。 awt.EventQueue.dispatchEvent(Unknown Source)at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt。 java.awt.EventDispatchThread.pumpEvents(Unknown Source)中的EventDispatchThread.pumpEventsForHierarchy(未知 Source) at java.awt.EventDispatchThread.pumpEvents(未知来源) java.awt.EventDispatchThread。运行(未知来源)线程中的异常AWT-EventQueue-0java.lang.NullPointerException telaprincipal $ 3.puxaemail siscart(telaprincipal.java:367)at telaprincipal $ 3.focusLost(telaprincipal.java:350)at java.awt.AWTEventMulticaster.focusLost(Unknown Source)at java.awt.Component位于的 java.awt.Component.processEvent(未知来源)的.processFocusEvent(未知来源) java.awt.Container.processEvent(未知来源) java.awt.Component.dispatchEventImpl (未知来源) java.awt.Container.dispatchEventImpl(未知来源)at java.awt.Component.dispatchEvent(未知来源) java.awt.KeyboardFocusManager.redispatchEvent(未知来自java.awt.Component.dispatchEventImpl(未知来源)的java.awt.DefaultKeyboardFocusManager.dispatchEvent(未知来源) java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(未知来源) at java.awt.Container.dispatchEventImpl(Unknown Source)at java.awt.Component.dispatchEvent(Unknown Source)at java.awt.EventQueue.di spatchEventImpl(未知来源)at java.awt.EventQueue.access $ 200(未知来源)at java.awt.EventQueue $ 3.run(未知来源)at java.awt.EventQueue $ 3 .run(未知来源)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source)at java。 security.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue $ 4.run(Unknown Source)at java.awt.EventQueue $ 4.run(Unknown Source)at java .bcurity.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue.dispatchEvent(Unknown Source)at java。 awt.EventDispatchThread.pumpOneEventForFilters(未知来源) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHie rarchy(Unknown Source)at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source)at java.awt.EventDispatchThread.run(未知来源)

java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at ConectaSiscart.getConexao(ConectaSiscart.java:30) at telaprincipal$3.puxaemailsiscart(telaprincipal.java:359) at telaprincipal$3.focusLost(telaprincipal.java:350) at java.awt.AWTEventMulticaster.focusLost(Unknown Source) at java.awt.Component.processFocusEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at telaprincipal$3.puxaemailsiscart(telaprincipal.java:367) at telaprincipal$3.focusLost(telaprincipal.java:350) at java.awt.AWTEventMulticaster.focusLost(Unknown Source) at java.awt.Component.processFocusEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

为什么我无法理解,我在另一个.java文件中有另一个类来与sql lite数据库建立连接,但是在这一刻它没有被召唤,为什么日食会犯这个错误?!?!!他认为首先我使用org.mysql工作正常,现在在第二个我将尝试使用org.sqlite

whyyyy i cant understand, i have another class in another .java file to do a connection with a sql lite database, but in this moment its not called in any moment, why the eclipse do this mistake?!?!! from where he thinks "First i worked fine with the org.mysql, now in the second i will try with the org.sqlite"

:|

推荐答案

我想我弄清楚发生了什么。当您调用DriverManager.getConnection时,它将逐个尝试所有可用的驱动程序,直到成功。当它在驱动程序上调用connect时,如果它是错误的驱动程序则返回null,如果失败则抛出异常,如果成功则返回Connection对象。当所有驱动程序都失败时,DriverManager会抛出它获得的第一个异常,如果有的话,或者创建并抛出找不到合适的驱动程序异常。

I think I figured out what's happening. When you call DriverManager.getConnection, it will try all the available drivers one by one until one succeeds. When it calls connect on a driver, it can return null if it's the wrong driver, throw an exception if it failed, or return a Connection object if it succeeds. When all the drivers fail, DriverManager throws the first exception it got, if any, or else creates and throws a "No suitable driver found" exception.

这可能是什么在您的情况下发生: - DriverManager首先尝试sqlite驱动程序;它应该返回null,因为它是url的错误驱动程序,而是它抛出异常(这是sqlite驱动程序实现中的一个错误!) - 接下来,DriverManager正在尝试mysql驱动程序,由于某些其他原因无法连接(例如,服务器未运行或密码错误) - DriverManager发现所有驱动程序都无法连接,因此它会抛出它获得的第一个异常,这是来自sqlite的那个(由于该实现错误)

This is probably what's happening in your case: - DriverManager is trying the sqlite driver first; it is supposed to return null because it's the wrong driver for the url, but instead it is throwing an exception (this is a bug in the sqlite driver implementation!) - next, DriverManager is trying the mysql driver, which fails to connect for some other reason (for example, server not running, or wrong password) - DriverManager sees that all the drivers failed to connect, so it throws the first exception it got, which is the one from sqlite (due to that implementation bug)

你可以做什么: - 从类路径中暂时删除sqlite驱动程序来解决mysql连接问题 - 更好,使用DataSource而不是DriverManager。 Mysql示例:

What you can do: - Remove the sqlite driver temporarily from the classpath to solve the mysql connection problem - Better, use a DataSource instead of DriverManager. Mysql example:

MysqlDataSource ds = new MysqlDataSource(); ds.setServerName(serverName); ds.setDatabaseName(mydatabase); ds.setUser(username); ds.setPassword(password); connection = ds.getConnection();

或者您可以使用数据库库为您处理

Or you can use a database library to handle it for you

更多推荐

自动将org.mysql更改为org.sqlite

本文发布于:2023-10-27 10:37:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1533120.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:org   mysql   sqlite

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!