标签: jackcess

java.lang.ClassCastException:java.lang.String 无法转换为 java.lang.Boolean,使用 Table.addRow() 和 Jackcess

我正在尝试使用 Jackcess 在 MS Access 数据库中写入一些值。我的值最初是使用字符串表示的。我正在使用的代码如下:

int nColumns = 0;

// get table from internal representation
ModelDatabaseTable table = this.DB.getTable(tableName);

// create new table
TableBuilder DBTableBuilder = new TableBuilder(tableName);

// get table's columns and their Jackcess datatype    
Map<String, DataType> columns = table.getColumns();

// for each column, insert it in the actual database
for (String columnName : columns.keySet()) {
    DataType dt = columns.get(columnName);
    ColumnBuilder cb = new ColumnBuilder(columnName).setType(dt);
    if (dt.isVariableLength()) {
        cb.setMaxLength();
    }
    DBTableBuilder.addColumn(cb);
    nColumns += 1;
}

// if columns …
Run Code Online (Sandbox Code Playgroud)

java string ms-access boolean jackcess

5
推荐指数
1
解决办法
6万
查看次数

调用executeUpdate时,UCanAccess/Jackcess异常会禁用我的Logger输出

我正在使用UCanAccess来操作Access数据库.在调用时executeUpdate我得到了异常:

net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 3.0.2意外的页面类型1(Db = db.accdb; Table = MyTable; Index = PrimaryKey)

它只在尝试更新一个特定行时发生 - 我已经知道如何在Access DB中修复此问题.

问题在于Logger,在抛出此异常后我抓住了它,我记录了一条信息消息但未显示,所有下一条日志消息也未显示.

我想在不修复数据库的情况下修复它的原因是因为当它发生一次时,用户应该关闭应用程序以便记录下一个动作,如果他没有,那么我将无法知道他做了什么.

这是我的代码:

public static void main(String args[]) {
    Logger logger = Logger.getLogger("myLogger");
    PreparedStatement pst = null;
    try {
        FileHandler fileHandler = new FileHandler("myLog.log", 0, 1, true);

        // Set formatter to put the time, the message, and the exception if exists
        fileHandler.setFormatter(new Formatter() {
            @Override
            public String format(LogRecord record) {
                Throwable t = record.getThrown();
                String stackTrace = "";
                if (t != null) …
Run Code Online (Sandbox Code Playgroud)

java ms-access logging jackcess ucanaccess

5
推荐指数
1
解决办法
542
查看次数

Java Jackcess 库文档?

我需要在 .mdb Access 文件上读取和写入一些数据,通过网络我找到了Jackcess库,它正是这样做的。

不幸的是我找不到任何使用它的文档。图书馆网站上有几个示例,但没有真正的文档。谁能告诉我某处是否有某种文档?

java jackcess

4
推荐指数
1
解决办法
2604
查看次数

我如何解决java jackcess依赖错误?

我想从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 ms-access jackcess

3
推荐指数
1
解决办法
4000
查看次数

Jackcess“ NoClassDefFoundError”异常

我正在使用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.<init>(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 by: java.lang.ClassNotFoundException: org.apache.commons.lang.builder.CompareToBuilder
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    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)
    ... 23 more
Run Code Online (Sandbox Code Playgroud)

我已经使用了jdbc,但是它也不起作用。如何解决我的问题?

java ms-access netbeans-7 jackcess

3
推荐指数
1
解决办法
6268
查看次数

尝试使用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"));
        }    

    }
}
Run Code Online (Sandbox Code Playgroud)

这些是我的进口:

    import java.io.File;
    import java.io.IOException;
    import com.healthmarketscience.jackcess.Database;
    import com.healthmarketscience.jackcess.DatabaseBuilder;
Run Code Online (Sandbox Code Playgroud)

另外,我已将这些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 setUnsupportedReason
    WARNING: unsupported collating sort order SortOrder[1053(0)] for text index, making read-only
    dec 21, 2013 1:54:27 EM com.healthmarketscience.jackcess.impl.DatabaseImpl readSystemCatalog
    INFO: Could not find expected index on …
Run Code Online (Sandbox Code Playgroud)

java ms-access jackcess

3
推荐指数
1
解决办法
3603
查看次数

使用Java/Jackcess从加密的Access .mdb中读取

我需要从加密的Access 97数据库中读取数据并尝试使用Jackcess和UCanAccess.

我正在使用来自bouncycastle.org的jackcess-2.1.2.jar,jackcess-encrypt-2.1.0和bcprov-jdk15on-152.jar

由于UCanAccess在内部使用Jackcess,我在其他所有尝试中都遇到了同样的错误.

import com.healthmarketscience.jackcess.CryptCodecProvider;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import java.io.File;

File fi = new File("test/access/data.mdb"); 
CryptCodecProvider cryptProvider = new CryptCodecProvider();
cryptProvider.setPassword("mypassword");
DatabaseBuilder dbb = new DatabaseBuilder(fi);
dbb.setFileFormat(Database.FileFormat.V1997);
dbb.setAutoSync(false);
dbb.setCodecProvider(cryptProvider);
dbb.setReadOnly(true);
Database dbc = dbb.open();
Run Code Online (Sandbox Code Playgroud)

最后一行调用错误,这里是堆栈跟踪:

Exception in thread "main" java.lang.NoSuchMethodError: org.bouncycastle.crypto.StreamCipher.processBytes([BII[BI)V
at com.healthmarketscience.jackcess.impl.BaseCryptCodecHandler.streamDecrypt(BaseCryptCodecHandler.java:91)
at com.healthmarketscience.jackcess.impl.BaseJetCryptCodecHandler.decodePage(BaseJetCryptCodecHandler.java:62)
at com.healthmarketscience.jackcess.impl.PageChannel.readPage(PageChannel.java:224)
at com.healthmarketscience.jackcess.impl.UsageMap.read(UsageMap.java:130)
at com.healthmarketscience.jackcess.impl.PageChannel.initialize(PageChannel.java:117)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:516)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:389)
at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:248)
at ACCESS.ACCESSTest.main(ACCESSTest.java:84)
Run Code Online (Sandbox Code Playgroud)

java encryption jackcess ms-access-97 ucanaccess

3
推荐指数
1
解决办法
702
查看次数

列出一个mdb文件中的所有表

有什么办法可以列出MDB文件中所有表的名称?我试图创建一个程序来测试用户在Quizbowl问题上。我想组织问题和答案,以便每个问题集都位于其自己的表中。简而言之,我对Jackcess的API并不熟悉-我尝试搜索是否有一种方法可以执行此操作,但是失败了。

谢谢。

jackcess

2
推荐指数
1
解决办法
682
查看次数