在Java 8中,将删除JDBC-ODBC-Bridge.典型的错误是:
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver
你知道可能的替代品吗?我找到了Easysoft.但是这个桥需要一个不在Java VM内运行的附加服务器.它是类型3驱动程序而不是类型1驱动程序.还有其他选择吗?
我有一个MS-Access mdb文件,我需要将数据导入我的mysql实例.我在Mac上,是否有任何免费/ OSS工具可以让我这样做?如果没有,是否有可用于提取我需要的数据的免费/ OSS JDBC驱动程序?
谢谢.
我的Java应用程序使用.mdb数据库,我想在MAC OS上运行这个应用程序,这肯定会有一个TYPE 4 JDBC驱动程序,我有谷歌,并遇到了两个 - HXTT和StelsMDB,但两者都超出我的范围
因此,如果任何机构有一些替代或建议,请回复.
提前致谢
到目前为止,当我不得不连接到32位Access数据库时,我只是使用32位JVM执行应用程序.但是,我现在正在开发一个需要64位JVM的应用程序,但我仍然需要连接到32位Access数据库.当我尝试连接时,我得到以下异常:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
String s = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + path;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(s, user, password);
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 java 连接到 ms access 数据库,但效果不佳
我收到了这样的错误信息
sun.jdbc.odbc.JdbcOdbcDriver
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import java.sql.*;
public class main{
public static void main(String[] args) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver(*.accdb)};DBQ=D:\\Andries\\testdatabase.accdb");
Statement st = con.createStatement();
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想从MS Access数据库显示数据,我正在使用Jackcess库,但是我得到一个依赖性错误,我不知道如何解决.这是我的代码和错误:
import com.healthmarketscience.jackcess.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import java.nio.*;
import java.lang.*;
import org.apache.commons.*;
import org.apache.commons.lang3.builder.*;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
class Main {
private static Logger log=Logger.getLogger(Main.class);
public static void main(String args[]) {
DOMConfigurator.configure("lib\\log4j.xml");
try {
Database d = Database.open(new File("lib\\ExTables.mdb"));
System.out.println(d.getTable("Cliente").display());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder
at com.healthmarketscience.jackcess.RowId.compareTo(RowId.java:108)
at com.healthmarketscience.jackcess.IndexData$Entry.compareTo(IndexData.java:1825)
at com.healthmarketscience.jackcess.IndexData$Entry.compareTo(IndexData.java:1637)
at java.util.Collections.indexedBinarySearch(Unknown Source)
at java.util.Collections.binarySearch(Unknown Source)
at com.healthmarketscience.jackcess.IndexData$DataPage.findEntry(IndexData.java:2347)
at com.healthmarketscience.jackcess.IndexData.findEntryPosition(IndexData.java:709)
at com.healthmarketscience.jackcess.IndexData.access$3100(IndexData.java:54)
at com.healthmarketscience.jackcess.IndexData$EntryCursor.updatePosition(IndexData.java:2118)
at …Run Code Online (Sandbox Code Playgroud) 我在一个简单的Java应用程序中有一个Jbutton(GetDataFromDB),它假设将数据从下面代码中的路径中描述的数据库加载到应用程序中的Jtable中.
编辑答案代码:
private void GetDataFromDBActionPerformed(java.awt.event.ActionEvent evt) {
Connection con;
ResultSet rs = null;
Statement stmt;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:Driver={MS Access Driver (*.mdb, *.accdb)};Dbq=C:\\Users\\Bruger\\Documents\\Database11.accdb");
stmt = con.createStatement();
String query = null;
query = "select * from cost";
rs = stmt.executeQuery(query);
i = 0;
while (rs.next()){
i = i + 1;
jTable.getModel().setValueAt(rs.getString(1), i, 1);
jTable.getModel().setValueAt(rs.getString(2), i, 2);
}
rs.close();
stmt.close();
con.close();
} catch(Exception err){
System.out.println(err.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,我在运行输出窗口中收到以下消息:
没有为jdbc找到合适的驱动程序:odbc:Driver = {Microsoft Access Driver( .mdb,.accdb)}; Dbq = C:\ Users\Bruger\Documents\Database11.accdb
我的代码顶部有导入: …
我正在Eclipse EE IDE中的Java项目中工作,我必须查询.accdb文件.问题是当我尝试加载驱动程序然后连接到数据库时,它给我一个异常错误.
我的代码:
try{
String filePath = "//myfilepathtomydb/BLABLA/example.accdb"
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + filePath;
Connection database = DriverManager.getConnection(url);
System.out.println("Connection sucessful");
} catch (ClassNotFoundException e){
System.err.println("Got an exception");
System.err.println(e.getMessage());
e.printStackTrace();
} catch (SQLException sqle) {
sqle.printStackTrace();
// TODO: handle exception
}
Run Code Online (Sandbox Code Playgroud)
例外:
Got an exception
sun.jdbc.odbc.JdbcOdbcDriver
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at project.Main.main(Main.java:15)
Run Code Online (Sandbox Code Playgroud)
我在64位Windows中使用32位Eclipse,并且从我读过的这种连接到数据库的方式不支持64位JRE,所以我使用的是选择的32位JRE( jdk1.8.0_05)在我的运行配置中,我在VM中使用了'-d32'参数.
显然 …
所以,我在 Windows 上很容易做到这一点,这并不奇怪。但我更关心在生产 Linux 服务器上运行它。
有没有一种方法可以让 Access Runtime 2013 在基于 Linux 的系统上工作,而不会抛出一些奇怪的方法。如果没有,那么我将不得不重新考虑我的计划。
就像代码库一样,这就是我正在做的事情:
const ADODB = require('node-adodb');
ADODB.debug = true;
//Bring in LUT Database
const LUTDB = ADODB.open(
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;Persist Security Info=False'
);
LUTDB.query('SELECT * FROM Table1')
.then(data => {
console.log(data);
})
.catch(err => {
console.log(err);
});
Run Code Online (Sandbox Code Playgroud) 我有数据库,其中一些名称是用立陶宛字母写的,但是当我尝试使用 java 获取它们时,它会忽略立陶宛字母
\n\n DbConnection();\n zadanie=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);\n sql="SELECT * FROM Clients;"; \n dane=zadanie.executeQuery(sql);\n\n String kas="Imon\xc4\x97";\n while(dane.next())\n {\n String var=dane.getString("Pavadinimas"); \n if (var!= null) {var =var.trim();} \n String rus =dane.getString("Rusys"); \n System.out.println(kas+" "+rus);\n }\n\n void DbConnection() throws SQLException\n {\n String baza="jdbc:odbc:DatabaseDC"; \n try\n {\n Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");\n }catch(Exception e){System.out.println("Connection error");}\n connect=DriverManager.getConnection(baza);\n }\nRun Code Online (Sandbox Code Playgroud)\n\n在 DB 中,字段类型为 TEXT,大小为 20,不要使用任何其他字母解码或类似的内容。
\n\n它给了我“ Imon\xc4\x97 Imone ”,尽管在数据库中写的是“Imon\xc4\x97”,它等于rus。
\n