Каков наилучший способ / шаблон для настройки соединения mysql и jdbc?

StackOverflow https://stackoverflow.com/questions/819845

  •  03-07-2019
  •  | 
  •  

Вопрос

Каков наилучший способ настроить соединение с jdbc mysql?И выполните простую инструкцию.Как это сделать?Спасибо.

Это было полезно?

Решение

Базовый шаблон для MySQL / JDBC выглядит примерно так:

Получить соединение :

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName");

Выполнить инструкцию :

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from tableName");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

Закройте оператор и соединение :

rs.close();
stmt.close();
conn.close();

Вам просто нужно убедиться, что у вас установлен драйвер и / или в вашем CLASSPATH.

Другие советы

На дворе двадцать первый век - используйте реализацию JPA (ORM).Но если вы настаиваете на возвращении к металлу (рискуя получить отрицательные голоса), -

Существует много способов получить соединение JDBC от какого-либо драйвера.Использование отражения с жестко заданным именем класса является самым распространенным и, возможно, наиболее повреждающим мозг.Если вы собираетесь жестко привязать имя класса, вы могли бы также получить преимущества обычного кода (компилятор улавливает опечатки, нет посторонних исключений, с которыми приходится иметь дело, легче читать, явные зависимости, лучшая поддержка инструментов и т.д.).

Также выработайте привычку безопасно очищать ресурсы.

Итак:

public static void main(String[] args) throws SQLException {
     Driver driver = new com.mysql.jdbc.Driver();
     Connection connection = driver.connect(
         "jdbc:mysql://mydatabase", 
         new java.util.Properties() {{
              put("user", "fred");
         }}
     );
     try {
         PreparedStatement statement = connection.prepareStatement(
             "SELECT insideLeg FROM user WHERE name=?"
         );
         try {
             statement.setString(1, "jim");
             ResultSet results = statement.executeQuery();
             try {
                 if (results.next() {
                     System.out.println("= "+results.getLong(1));
                 } else {
                     System.out.println("Missing.");
                 } 
             } finally {
                 results.close();
             }
         } finally {
             statement.close();
         }
     } finally {
         connection.close();
     }
}

Что за бардак!И он еще даже не использует транзакции.Да, используйте ORM.В наши дни они очень респектабельны.

Вам не нужно будет делать все это для каждого отдельного оператора.Вы же не хотите каждый раз создавать экземпляры драйверов.В частности, полезна идиома execute around.

Это зависит от вашего случая.

Если вам просто нужно выполнить некоторые запросы из автономного приложения, вам следует использовать одно соединение, например:

Class.forName ("yourDriverName");

Connection cn = DriverManager.getConnection ("db url");
Statement st = cn.createStatement ();
ResultSet rs = st.executeQuery ("select * from foo");
while (rs.next()) {
  doSmth ();
} 
rs.close ();
st.close ();
cn.close ();

Но если вы разрабатываете реальное приложение (особенно веб-приложение), используйте DataSource. Прочтите руководство по вашей БД и веб-серверу, как настроить источник данных. DataSource позволяет вам использовать пул соединений - это необходимо для повышения производительности.

Настройка источника данных не сложный процесс.

Вот солнечная документация по созданию соединения JDBC . Оттуда легко получить получить доступ к объекту Statement и запустить простой SQL.

Для систем производственного уровня вы, вероятно, также захотите создать пул соединений .

Используйте инфраструктуру абстракции JDBC Spring Framework - все, что вам нужно сделать, - это создать XML-файл контекста и использовать шаблонный класс JDBC. Всего несколько строк кода XML + Java помогут вам в этом. Преимущество заключается в том, что данные вашего соединения хранятся вне скомпилированной Java. Увидеть: http://www.springbyexample.org/examples/simple-spring- JDBC-template.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top