Каков наилучший способ / шаблон для настройки соединения MySQL и JDBC? - PullRequest
0 голосов
/ 04 мая 2009

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

Ответы [ 5 ]

3 голосов
/ 04 мая 2009

Базовый шаблон для 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.

2 голосов
/ 04 мая 2009

Это двадцать первый век - используйте реализацию 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. Они очень респектабельные в наши дни.

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

1 голос
/ 04 мая 2009

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

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

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 позволяет вам использовать пул соединений - это необходимо для повышения производительности.

Настройка DataSource не сложный процесс.

1 голос
/ 04 мая 2009

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

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

0 голосов
/ 04 мая 2009

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

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