Tag: ms access

如何更改SortOrder以避免“不支持整理排序顺序”错误?

我一直在使用来自第三方客户端的.mdb数据库的程序。 在我尝试更新数据库中的元素之前,一切都很好。 sortOrder字段不正确。 我试图通过MS Access将其更改为一般,并且没有运气。 我执行更新查询时收到的消息是: java.lang.IllegalArgumentException: Given index Index@150ab4ed[ name: (EXART) PrimaryKey number: 2 isPrimaryKey: true isForeignKey: false data: IndexData@3c435123[ dataNumber: 2 pageNumber: 456 isBackingPrimaryKey: true isUnique: true ignoreNulls: false columns: [ ReadOnlyColumnDescriptor@50fe837a[ column: Column@636e8cc[ name: (EXART) ARCodArt type: 0xa (TEXT) number: 0 length: 30 variableLength: true compressedUnicode: true textSortOrder: SortOrder[3082(0)] ] flags: 1 […]

Jackcess“NoClassDefFoundError”exception

我使用jackcess与我的访问数据库保持一致。 但我跟随例外 Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder at com.healthmarketscience.jackcess.impl.RowIdImpl.compareTo(RowIdImpl.java:113) at com.healthmarketscience.jackcess.impl.IndexData$Entry.compareTo(IndexData.java:1838) at com.healthmarketscience.jackcess.impl.IndexData$Entry.compareTo(IndexData.java:1646) at java.util.Collections.indexedBinarySearch(Collections.java:273) at java.util.Collections.binarySearch(Collections.java:259) at com.healthmarketscience.jackcess.impl.IndexData$DataPage.findEntry(IndexData.java:2368) at com.healthmarketscience.jackcess.impl.IndexData.findEntryPosition(IndexData.java:722) at com.healthmarketscience.jackcess.impl.IndexData.access$3300(IndexData.java:56) at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.updatePosition(IndexData.java:2133) at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.restorePosition(IndexData.java:2072) at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.restorePosition(IndexData.java:2055) at com.healthmarketscience.jackcess.impl.IndexData$EntryCursor.beforeEntry(IndexData.java:2017) at com.healthmarketscience.jackcess.impl.IndexCursorImpl.findPotentialRow(IndexCursorImpl.java:368) at com.healthmarketscience.jackcess.impl.IndexCursorImpl.findFirstRowByEntryImpl(IndexCursorImpl.java:262) at com.healthmarketscience.jackcess.impl.IndexCursorImpl.findFirstRowByEntry(IndexCursorImpl.java:135) at com.healthmarketscience.jackcess.impl.DatabaseImpl$DefaultTableFinder.findRow(DatabaseImpl.java:1890) at com.healthmarketscience.jackcess.impl.DatabaseImpl$TableFinder.findObjectId(DatabaseImpl.java:1799) at com.healthmarketscience.jackcess.impl.DatabaseImpl.readSystemCatalog(DatabaseImpl.java:804) at com.healthmarketscience.jackcess.impl.DatabaseImpl.(DatabaseImpl.java:513) at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:386) at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:170) at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:193) at ass.Access.main(Access.java:25) Caused […]

尝试使用Jackcess(Java)从Access读取时“不支持整理排序顺序”

我目前正在开发一个Java应用程序,其中包括使用Jackcess开源库读取Microsoft Access文件。 Java应用程序稍后将显示Access文件中包含的表。 这是我到目前为止的代码: public class Test { public static void main(String[] args) throws IOException { File file = new File(“\\\\student.local\\Files\\Home\\nat12mja\\Downloads\\Testdoc.accdb”); Database db = DatabaseBuilder.open(file); Table table = db.getTable(“Table1”); for(Row row : table){ System.out.println(row.get(“Field1”)); } } } 这些是我的import: import java.io.File; import java.io.IOException; import com.healthmarketscience.jackcess.Database; import com.healthmarketscience.jackcess.DatabaseBuilder; 另外,我已将这些Jar文件添加到我引用的库中: commons-lang-2.4.jar,commons-logging-1.1.jar,jackcess-2.0.2.jar 当我运行我的应用程序时,我收到此错误消息(System.out.println()按预期工作): dec 21, 2013 1:54:27 EM com.healthmarketscience.jackcess.impl.IndexData […]

通过JDBC访问Access(使用ODBC?)

我正在寻找一种在Java App中打开Access MDB文件的方法(使用JDBC)。 一个快速的Google搜索建议我需要JDBC-ODBC Bridge … 这是否意味着我需要配置我想运行应用程序的每个系统,以便为我想要打开的MDB提供ODBC DSN? 还有一个问题(因为我之前从未使用过ODBC):通信是通过某种套接字(客户端/服务器风格),还是通过方法/函数调用(比如嵌入式Derby db)进行的?

对具有重音字符的JDBC-ODBC Bridge查询失败

我正在通过JDBC-ODBC Bridge向Java发送查询到Access数据库,如下所示: “SELECT * FROM localities WHERE locName='” + cityName + “‘” 当cityName是没有重音字符的普通字符串时,结果集是正确的。 但是当cityName恰好是LEÓN , SAHAGÚN类的东西,其中带有重音字符,那么我就没有结果。 在这些情况下,查询似乎失败了。 在MS Access中运行时相同的查询工作正常,我也尝试使用Ms Data Acces SKD并且这些查询完美运行。 它们仅在通过JDBC-ODBC Bridge时失败。 据我所知,Java使用UTF-8作为字符串,Access也是如此。 他们都使用Unicode。 有谁知道这个问题的任何解决方案?

如何从64位JVM连接到32位Access数据库?

到目前为止,当我不得不连接到32位Access数据库时,我只是使用32位JVM执行应用程序。 但是,我现在正在开发一个需要64位JVM的应用程序,但我仍然需要连接到32位Access数据库。 当我尝试连接时,我得到以下exception: 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) 这是我的代码: String s = “jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=” + path; Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); conn = DriverManager.getConnection(s, user, password);

使用Java创建Access数据库文件(.mdb或.accdb)

目前我有一个应用程序,我可以使用JdbcOdbcDriver访问.mdb或.accdb文件以附加一些数据。 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); con = DriverManager.getConnection(“jdbc:odbc:MsAccessDSN”); 但在此,我需要配置系统DSN。 我们需要添加新的数据源(Microsoft Access Driver),然后需要提供.mdb文件的位置。 只有这样,上面的代码才有用。 假设我想在其他系统上运行我的应用程序,那么我需要对该计算机执行相同的操作。 如果我将我的应用程序提供给客户端,他/她不知道如何配置.mdb文件。 那么我的全部努力都会浪费。 因此,我可以使用任何驱动程序通过我的Java代码创建.mdb文件,然后将所有数据附加到.mdb文件的表中。 或者还有其他方法,Java代码可以创建.mdb文件并能够访问此数据库文件。 我尝试了这个代码,无需配置系统DNS即可附加数据: public class TestMsAccess { private static Connection con; private static Statement stm; private static String tableName = “EmpDetail”; private static int id_is = 2; private static String name_is = “Employee1”; public static void main(String[] args) throws ClassNotFoundException, SQLException { […]

如何从64位Java连接到Access .mdb数据库?

嗨,我有以下代码连接到Windows 7操作系统上的MS Access数据库。 我已将数据源快捷方式更改为指向64位odbc然后32位。 但仍然得到错误 java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) at java.sql.DriverManager.getConnection(DriverManager.java:579) at java.sql.DriverManager.getConnection(DriverManager.java:221) at TestDBConnection.main(TestDBConnection.java:21) 我的代码是: import java.sql.Connection; import java.sql.DriverManager; public class TestDBConnection { public static void main(String[] args) { // TODO Auto-generated method stub […]

指定的DSN包含体系结构不匹配错误

我收到了这个错误: 指定的DSN包含驱动程序和应用程序之间的体系结构不匹配 尝试使用NetBeans和Java编程语言连接到数据库时 我正在使用Microsoft Access 2010和我的系统在64位Windows 7上运行。 我该如何解决这个问题? 感谢大家。

JDBC ODBC驱动程序连接

我正在为我的大学的一个class级做一个项目。 我正在学习连接和操作数据库,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 /* Perform database operations */ try { Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); System.out.println(“Driver loaded”); connection = DriverManager.getConnection(“jdbc:odbc:Lab3.accdb”); System.out.println(“Database connected”); statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(“”); while (resultSet.next()) { output.write(“” + resultSet.getString(1) + “\t” + resultSet.getString(2) + “\t” + resultSet.getString(3) + “”); } connection.close(); } catch (ClassNotFoundException|SQLException e) { System.out.println(“Database Access Error.”); e.printStackTrace(); } 在寻找“sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 […]