2012-02-16 33 views
0

Javaコードを使用してJavaの既存のテーブルに新しい行を追加しようとしています。テーブルはAccess .mdbデータベースファイルにあります。私のコードの全体は、私が.mdbを作成するために使ったものを含めてここにあります。JavaでJackcessを使用してテーブルに行を追加する

注: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(); 

    } 
} 

答えて

1

あなたが入力したコードは機能します。私はあなたのreadDatabase方法、あなたは二重引用符のバランスの取れたペアを持っていないという通知で出力

User Pass Enabled 
Max  John true 

を取得します。インポートされたライブラリとしてjackcess 1.2.8、commons-lang 2.6、commons-logger 1.1を使用し、Java 1.6で動作しています。

あなたが書いたコードは、these examplesと非常によく似ており、互換性やファイル/ディレクトリへのアクセスの問題以外は、あなたがしたことに間違いはありません。それでも問題が解決しない場合は、例外ブロックを入力して何が起きているのかを確認してください。

1

この問題のコードは、古い(廃止予定の)1.xバージョンのJackcessのためであり、現在の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); 
     } 
    } 

} 
関連する問題