3f-lab: Маленький практикум по JDBC

Подобно камраду Markony, радующему нас простыми и надежными электронными схемами, решил опубликовать некоторые свои классы для различных полезных целей. Вот, например, базы данных. Сейчас появились дикие по своей сложности фреймворки для этой цели. На самом деле всё очень и очень просто. Нужно только изучить основы JDBC и скачать драйвера для нужных баз:


package com.michaelbelyakov1967.util;

import java.util.HashMap;      // Импортируем только то, что надо,
import java.sql.Connection;    // никаких звездочек.
import java.sql.DriverManager; // Так научил меня один немец.

public class Connector {

 public enum Type {MYSQL, POSTGRESQL, SQLITE}; // Типы баз данных,
                                               // с которыми часто приходится работать.
                                               // Список можно расширить добавив, например, MSSQL.

 // Пул баз данных. Если соединение уже установлено - его можно взять отсюда, а не
 // устанавливать заново.

 private static HashMap <String, Connection> dbPool = new HashMap <String, Connection> ();

 // Логин, пароль, имя базы, имя хоста, тип базы: это вся необходимая информация 
 // для связи с БД.

 public static synchronized Connection connect(String login, String password, 
                                               String dbName, String host, Type type){
  Connection conn = dbPool.get(login);	 
  if(conn != null)return conn; // Если база уже в пуле - просто возвращаем по логину	 
  try{
   switch(type){
    case POSTGRESQL:
     Class.forName("org.postgresql.Driver").newInstance();	  
     conn =  DriverManager.getConnection(getConnectionString("postgresql", 
                                         host, dbName, login, password)); break;
                                         // Устанавливаем связь с PostgreSQL
    case MYSQL:
     Class.forName("org.gjt.mm.mysql.Driver").newInstance();	  
     conn = DriverManager.getConnection(getConnectionString("mysql", 
                                        host, dbName, login, password)); break;
                                         // Устанавливаем связь с MySQL
    case SQLITE:
     Class.forName("org.sqlite.JDBC").newInstance();	  
     conn = DriverManager.getConnection("jdbc:sqlite:" + dbName); break;
                                         // Устанавливаем связь с SQLight
    default:
     return null;     
   }
   dbPool.put(login, conn);              // Помещаем в пул для повторного использования.
   return conn;
  }
  catch(Exception ex){System.out.println("SQL-connection error: " + ex.getMessage());}
  return null;
 }

 // Очень часто именем хоста является localhost. Создаем упрощенный конструктор для таких случаев.

 public static synchronized Connection connect(String login, String password, String dbName, Type type){
  return connect(login, password, dbName, null, type);
 }
 
 private static String getConnectionString(String dbType, String host, 
                                            String dbName, String login, String password){
  String s = "jdbc:" + dbType + "://" + (host == null ? "localhost" : host) + '/' +  
              dbName + "?user=" + login + "&password=" + password;
  return s;
 }
}
  • +4
  • 18 февраля 2010, 15:39
  • yababay

Комментарии (7)

RSS свернуть / развернуть
+
0
Отличный пример
Мне нравится что на сайте sun доступная документация по фундаментальным принципам Java
Вся сложность в том чтобы начать программировать на Java — освоение инструментария и его разнообразие
3f-lab — это очень удобно. Сейчас у меня все что нужно есть в _bin, при переносе на другую машину — просто копирую и распаковываю архив )))
avatar

Sergei_T

  • 18 февраля 2010, 16:40
+
0
И кстати, минус компилирования под java — очень много используется файлов, SSD диск работает очень медленно. Думаю сделать какой-то рамдрайв для временных файлов чтоли
avatar

Sergei_T

  • 18 февраля 2010, 16:41
+
0
Да, нетбук — не самый подходящий инструмент для компилирования Java-кода. Я работаю с его помощью по ssh на более мощной машине.
avatar

yababay

  • 18 февраля 2010, 18:28
+
0
Ё-моё, я ж в черновиках сохранял, как оно сюда попало?
avatar

yababay

  • 18 февраля 2010, 18:07
+
0
Наверное даванул Опубликовать
avatar

Sergei_T

  • 18 февраля 2010, 18:16
+
0
Оснастил комментариями, теперь готово
avatar

yababay

  • 18 февраля 2010, 18:23
+
0
Красиво БЛИН!
avatar

Markony

  • 18 февраля 2010, 19:19

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.