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;
}
}

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