我正在尝试使用Java代码向Java中的预先存在的表添加新行。该表位于Access .mdb数据库文件中。这是我的整个代码,包括我用来创建.mdb的代码。
注意:我希望能够使用Jackcess和Java方法向表中添加行。
import com.healthmarketscience.jackcess.*;
import org.apache.commons.logging.*;
import org.apache.commons.lang.*;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
import java.util.List;
import java.util.Map;
public class DataManagement {
static Database db;
static Table Users;
public static void createNewDataBase(){
try{
db = Database.create(new File("test.mdb"));
Users = new TableBuilder("Users")
.addColumn(new ColumnBuilder("User")
.setSQLType(Types.VARCHAR)
.toColumn())
.addColumn(new ColumnBuilder("Pass")
.setSQLType(Types.VARCHAR)
.toColumn())
.addColumn(new ColumnBuilder("Enabled")
.setSQLType(Types.BOOLEAN)
.toColumn())
.toTable(db);
}
catch(Exception ex){
}
}
public static void readDatabase(){
try{
System.out.println(Database.open(new File(test.mdb"))
.getTable("Users").display());
}
catch(Exception e){}
}
public static void addUser(String name, String pass){
try{
Users.addRow(name, pass, true);
}
catch(Exception e){
}
}
// This main is present for testing purposes only
public static void main(String args[]){
//createNewDataBase();
//addUser("Max", "John");
//readDatabase();
}
}
答案 0 :(得分:1)
您提供的代码有效。我得到了输出
User Pass Enabled
Max John true
在readDatabase
方法中,请注意您没有平衡的双引号对。我使用了jackcess 1.2.8,commons-lang 2.6和commons-logger 1.1作为我的导入库,我运行的是Java 1.6。
您编写的代码非常符合these examples,因此除了兼容性或文件/目录访问问题之外,我认为您执行的操作没有任何问题。如果您仍然遇到问题,可以尝试填充异常块以查看原因。
答案 1 :(得分:1)
问题中的代码是针对Jackcess的旧版(已弃用)1.x版本,因此可能会让寻求当前2.x版Jackcess的帮助的人感到困惑。下面是相应的2.x代码,用于创建数据库文件,创建新表,然后添加一行:
package so9318569;
import java.io.File;
import com.healthmarketscience.jackcess.ColumnBuilder;
import com.healthmarketscience.jackcess.DataType;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.Database.FileFormat;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Table;
import com.healthmarketscience.jackcess.TableBuilder;
public class So9318569Main {
public static void main(String[] args) {
try (Database db = DatabaseBuilder.create(FileFormat.V2003, new File("test.mdb"))) {
Table tblUsers = new TableBuilder("Users")
.addColumn(new ColumnBuilder("User", DataType.TEXT))
.addColumn(new ColumnBuilder("Pass", DataType.TEXT))
.addColumn(new ColumnBuilder("Enabled", DataType.BOOLEAN))
.toTable(db);
tblUsers.addRow("Max", "John", true);
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}