Можно ли подключить 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.