2017-07-15 38 views
0

現在私は、MSアクセスデータベース上でCRUD操作のGUIとして機能したいJava Swingアプリケーションを開発しています。現在、このアプリケーションを使用するチームの全員が、共有サーバー上のスプレッドシートを更新します。彼らは、目的に合ったUIに切り替えて、スプレッドシートをデータベースに移行したいと考えています。shareerver上のmsアクセスdbにjava swingアプリケーションを接続する最善の方法は?

実行可能なjarとmsアクセスデータベースファイルを共有サーバーに配置する予定です。これがjarファイルにアクセスする場所です。

私は、ユーザーがODBC設定を煩わせる必要はありません。これを助けるライブラリがありますか?

更新:Shilendrasinghパティルの提案が私のためにはうまくいった。これは私に少しの研究を要し、セットアップはちょっと混乱していました。しかし、私は最終的に私が望んでいたやり方ですべてのことを実現しました。私はUradAccessを使用するために必要な依存関係を引き出すためにGradleを使用しました。

次は私のDatabaseControllerクラスからの抜粋です:

import javax.swing.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.Statement; 

public class DatabaseController { 

    public DatabaseController() {} 

    public void addOperation(String date, String email, String subject, String body) { 
    try{ 
     Connection con = DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\user\\Desktop\\TestDatabase.accdb;jackcessOpener=CryptCodecOpener","user", "password"); 

     String sql = "INSERT INTO Email (Date_Received, Email_Address, Subject, Message) Values " + 
       "('"+date+"'," + 
       "'"+email+"'," + 
       "'"+subject+"'," + 
       "'"+body+"')"; 

     Statement statement = con.createStatement(); 
     statement.execute(sql); 
    } 
    catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e.getMessage(),"Error", 
       JOptionPane.ERROR_MESSAGE); 
     e.printStackTrace(); 
    } 
} 
} 

以下のクラスも必要です:

import java.io.File; 
import java.io.IOException; 
import com.healthmarketscience.jackcess.CryptCodecProvider; 
import com.healthmarketscience.jackcess.Database; 
import com.healthmarketscience.jackcess.DatabaseBuilder; 
import net.ucanaccess.jdbc.JackcessOpenerInterface; 

public class CryptCodecOpener implements JackcessOpenerInterface { 
public Database open(File fl,String pwd) throws IOException { 
    DatabaseBuilder dbd =new DatabaseBuilder(fl); 
    dbd.setAutoSync(false); 
    dbd.setCodecProvider(new CryptCodecProvider(pwd)); 
    dbd.setReadOnly(false); 
    return dbd.open(); 
} 
} 

私が悪いのくぼみをお詫び申し上げます。

+0

私は実際のデータベース(msアクセスではない)を使用することをお勧めします。 SQL Server、またはMySQL(またはPostgres)のいずれかです。それに失敗すると、私はSQLiteを好むでしょう。 –

+0

また、guiライブラリをデータベースに接続することも考えないでください。 GUIを扱うコードとデータベースアクセスを扱うコードの2つのセクションは、完全に別々のものにする必要があり、お互いに完全に無関係であることが望ましいです。このようにして、任意の永続性フレームワークに同じGUIコードを使用できます。また、データベースコードで任意のGUIライブラリを使用できます。もちろん、コードをブリッジする必要がありますが、結合力が低く、結合力の高いコードに挑戦してください。 –

+0

入力いただきありがとうございます。このシナリオでは、MS Accessを使用することに限定されます。実行可能なjarファイルとアクセスデータベースファイルは共に共有サーバーに格納されます。 jarファイルはユーザーのローカルマシンには保存されません。私が避ける必要があるのは、ユーザーがコントロールパネルの管理設定に行き、ODBC設定を調整する必要があるということです。すべてのユーザーが自分のマシンで管理者権限を持っているわけではありません。 – bmck2006

答えて

1

UCanAccessドライバを使用してMS-Accessに接続する必要があります。これは純粋なJDBCベースであり、ODBCドライバは必要ありません。 例を参照してくださいhere

+0

提案をありがとうございます。これは私のために働いた。私は上記の質問で私の結果を更新しました! – bmck2006

関連する問題