1

ユーザーは、ms sql か my sql かのタイプを指定するべきではありませんか? 私はそれをネットビーンズでやりたいですか?そうでない場合、何か方法はありますか?

ありがとうございました

4

1 に答える 1

3

編集

どういうわけか、複数のデータベースを処理できるアプリケーションを開発する方法を知りたいと思っていました。そんな時に役立つパターンです。ただし、実際にデータベースにクエリを実行し、そこから必要なすべてのデータを取得するには、対応する API を使用する必要があります。(たとえば、Java アプリケーションのJDBC )。この回答の最後まで読んでください。実際の Sql Server データベースで JDBC を使用する方法の例を追加しました。

(最初の部分:永続化レイヤーの管理方法)

プログラムには多層アーキテクチャが必要です。これらのレイヤーの 1 つは、データベースからデータをクエリ/取得する永続レイヤーである必要があります。これからは、この永続層についてのみ説明します。

これを行う 1 つの方法は、Java インターフェイスを使用することです。

public interface DataService
{
   connect();
   close();
   ArrayList<IUser> retrieveUserDatas(..);
   // other expected operations
   .... 
}

次に、データベースの種類ごとにこのインターフェイスの実装クラスを 1 つ用意します。したがって、次のようになります。

class SqlServer implements DataService
{
   // Implementation of your operations using Sql Server drivers
}

class Mysql implements DataService
{ 
   // Implementation of your operations using Mysql drivers
}

そして、どのデータベースを使用するかを決定するマネージャーを持つことができます。

class Manager
{
   DataService dataService;
   public Manager(string databaseType)
   {
       if(databaseType.equals("sqlserver"))
       {
          dataService = new SqlServer();
       }

       else if(databaseType.equals("mysql"))
       {
          dataService = new Mysql();
       }
   }
}

したがって、上位層では、適切なデータベース システムを使用して永続化層のマネージャーを作成できます。

Manager manager = new Manager("mysql"); // I want to manage my database layer with mysql

dataServiceこれで、マネージャーからの属性がクラスのインスタンスにMysqlなり、このクラスの操作を使用できるようになります。これは、新しいデータベースをシステムに追加するたびに変更する必要がある 1 行のコードです (+ インターフェイスを実装し、データベースの特定のドライバーを使用するクラス)。

参考までに、これはブリッジのデザイン パターンです。

(第 2 部: JDBC の操作)

たとえば、Sql Server データベースの実装クラスは実際には次のようになります。

public class SqlServerAccess implements IDataServerAccess {

    static final String url= "jdbc:sqlserver://localhost:1433;databaseName="NAME OF YOUR DATABASE";integratedSecurity=true;";
    Connection connector;


    public void connection() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
            connector = DriverManager.getConnection(url, "root", "");
        } catch (Exception ex) {
            Logger.getLogger(SqlServerAccess.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


    @Override
    public void close() {
        try {
            if(connector != null){
                connector.close();
            }
        } catch (SQLException ex) {
            Logger.getLogger(SqlServerAccess.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

このconnection()メソッドでは、Sql Server ドライバーを参照したことがわかります。com.microsoft.sqlserver.jdbc.SQLServerDrive

そのため、データベースごとに、特定のドライバーをダウンロード (.jar) し、実装クラスで指定する必要があります。

最後に、インサートは次のようになります。

public void insertData(Data data) {
        try {
            Statement st = dataServerAccess.connect().createStatement();
            st.execute("INSERT INTO DATA(bla, bla, bla, bla, created_at)"
                                + "VALUES('" + data.bla()
                                + "', '" + ..
                                + "', '" + ..
                                + "', '" + ..
                                + "','"  + getTodayTimestamp() +"')");
        } catch (SQLException ex) {

        } finally {
            dataServerAccess.close();
        }
    }

この説明が、あなたが望むものを構築するのに役立つことを願っています. これらすべてのキーワードをグーグルで検索する必要がある場合があります(JDBC、データベースレイヤーなど、後でJPAをさらに進めることができます。これはオブジェクトリレーショナルマッパーです。とにかく、キーワードをグーグルでチェックしてください!)。たとえば、mysql で JDBC を使用するのに役立つドキュメントがいくつかあります。

于 2011-02-19T15:44:38.360 に答える