div.main {margin-left: 20pt; margin-right: 20pt}Работа из Java с базами MS Access.
Автор неизвестен.
Используемое ПО: Windows 98, JDK1.2.1, MS Office(Access), текстовый редактор
на вкус.
-=1=- Создание БД -- Запускаем Access. У меня при запуске вываливается три
радиобатона - Hовая база, Запуск мастера, Открыть Базу Данных. Выбираю "Hовая
база". Выскакивает фрейм с вопросом где и с каким именем сохранить БД -
указываю. Появляется еще фрейм, в котором в разделе "таблицы" указываю -
"создать". Еще одно окно - выбираю "режим таблицы". Появляется табличка как в
Excel(Quatro Pro и т.д.). Переименовать столбец можно щелкнув по нему правой
кнопкой мыши и выбрав пункт "Переименовать столбец". Поля заполняются как в
Excel,Quatro Pro, etc. После заполнения таблицы жму на ALT+F4 - появляется
вопрос - сохранить таблицу? Соглашаюсь и подтверждаю название таблицы. Hа вопрос
о ключевых полях отвечаю -нет-.
-=2=- Теперь нужно прописать БД в винде. -- Захожу "пуск - настройка - панель
управления - 32bit ODBC - System DSN - Add" Выбираю из списка "Micrososft Access
Driver(*.mdb)" жму "готово". Появляется фрейм - в поле "Data Source Name" пишу
имя БД(думаю можно любое - пусть профи меня поправят),то под каким
сохранил(например, db1.mdb - сохраненная БД, значит пишу - db1). Hажав кнопку
"SELECT" выбираю БД(в этом случае - db1.mdb) - жму ОК и в окне "System DSN" вижу
"db1 Microsoft Access Driver(*.mdb)" -=3=- Создание файла для доступа к БД
import java.sql.*;
class ListClasses
{
public ListClasses() throws SQLException
{
String a,b,c;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (java.lang.ClassNotFoundException exc)
{System.out.println("ClassNotFoundException");exc.printStackTrace();}
Connection Ex1Con =
DriverManager.getConnection("jdbc:odbc:db1","login","password");
/*в скобках указывается URL,login,password
URL имеет вид
jdbc:<субпротокол>:<имя,связанное с СУБД, или Протоколом>
У БД в интернет/интранет "имя" может содержать сетевой URL
//<имя хоста>:<порт>/..
для моста JDBC-ODBC
jdbc:odbc:
где, db1 - имя БД, login - имя входящего, password - пароль
последние два параметра я в своем примере опускал */
Statement Ex1Stmt = Ex1Con.createStatement();
ResultSet Ex1rs = Ex1Stmt.executeQuery("SELECT * FROM alex");
//выполняется SQL-запрос -- выбрать (SELECT) все столбцы(*) из(FROM) таблицы
//alex
System.out.println("Class Location Schedule");
while (Ex1rs.next()){
a = Ex1rs.getString(1);
b = Ex1rs.getString(2);
c = Ex1rs.getString(3);
System.out.println(a + " " + b + " " + c);
}
}
//Здесь(выше) берется всего 3 столбца из таблицы
public static void main(String args[]) throws Exception
{
try{
ListClasses l = new ListClasses();
}
catch (NoClassDefFoundError e)
{
System.out.println("Stop!");
e.printStackTrace();
}
}
}
Это простейший пример доступа к БД, полезность его вижу в том, что
он рабочий. Этот же пример был проверен с InterBase SQL-server version
WI-V4.2.1.328 Подробно описывать каждую строку не вижу смысла - чтобы
разобраьтся с JDBC нужно почитать литературу по JDBC&SQL(хотя бы основы
запросов) и/или посмотреть исходники классов пакета java.sql.*. Далее советую
посмотреть примеры из свинга -- у меня Swing1.1 - ExamplesDBDemos;
ExamplesTableTableExample2,JDBCAdapter,TableSorter,TableMap. Мне очень помог
класс JDBCAdapter. Я по своей неопытности столкнулся с тем, что вроде бы
правильный пример не хотел запускаться, здесь я описал все шаги для запуска
этого самого примера.
|