Можно ли подключить MySQL и SQL Server, чтобы получить таблицы в нем?

Пользователь не должен указывать тип, является ли это MS SQL или мой SQL? Я хочу сделать это в Ne tBeans? Если нет, есть ли способ?

Спасибо

1 ответ

РЕДАКТИРОВАТЬ

Я как-то подумал, что вы хотите знать, как разработать приложение, которое может обрабатывать несколько баз данных. Так что это шаблон, который может помочь вам в этом. Но для того, чтобы на самом деле запросить вашу базу данных и получить из нее все необходимые данные, вам нужно использовать соответствующие API. ( JDBC для вашего Java-приложения, например). Прочтите до конца этого ответа, я просто добавил пример использования JDBC с реальной базой данных Sql Server.

(Первая часть: как управлять своим постоянным слоем)

У вас должна быть многоуровневая архитектура для вашей программы. Одним из этих уровней должен быть постоянный уровень, который будет запрашивать / извлекать данные из ваших баз данных. Отныне я собираюсь обсуждать только этот слой постоянства.

Один из способов сделать это - использовать интерфейсы Java.

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

И затем, есть один класс реализации этого интерфейса для каждого типа базы данных. Итак, вы будете иметь:

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 класс, и вы сможете использовать операции этого класса. Это всего лишь одна строка кода, которую нужно менять каждый раз, когда вы добавляете новую базу данных в вашу систему (+ класс, реализующий интерфейс и использующий определенные драйверы вашей базы данных).

К вашему сведению, это шаблон дизайна!

(Вторая часть: работа с 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, который является Object-Relational-Mapper. В любом случае, ключевые слова проверять в Google!). Например, вот некоторая документация, которая поможет вам использовать JDBC с mysql.

Другие вопросы по тегам