Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: JAVA и БД  (Прочитано 10863 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RaptuGava
Гость
« : 21-12-2003 07:48 » 

HI ALL!
 Никак немогу разобратться
 Открываю МС АКСЕС делаю там базу с двумя таблицами в каждой по 3 атрибута
 заполняю её потом в ODBC Administrator ползовательский DSN добавить
 выбираю Driver do Microsoft Access (*.mdb) задаю имя TEST1 пароль и имя пользователя
 далее на яве
import java.sql.*;
class jopa
{

public static void main(String agrs[])
{
String url="jdbc:odbc:TEST1";
Connection con;   
DatabaseMetaData meta;
    try{
      java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      
      }
    catch(java.lang.ClassNotFoundException e)   
     {
     System.out.print("NON CALSS e");
     }
                                                 
   try{      
        con=DriverManager.getConnection(url,"arkan","12");
        meta=con.getMetaData();
        out(meta.getDriverName());
        out(meta.getMaxColumnsInTable());
        out(meta.getURL()+"\n"+meta.getUserName());
        }
        
    catch (SQLException e)    
     {
      System.out.print("\n ERROR "+e.getMessage());
     }

       
     
   
   

return;
}
static void out(String s)
{
System.out.print(s+"\n");
}
static void out(int s)
{
System.out.print(s+"\n");
}
}

ВНИМАНИЕ ВОПРОС
а чего дальше то делать???
как мне получить записи из какойнить таблицы и как туда чегонитть добавить??
помогите очень надо!
Заранее Блогадарен Аркан!
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #1 : 29-12-2003 08:35 » 

RaptuGava, извиняюсь за задержку ответа - отдыхал, на интернет доступа не было вообще.

Теперь отвечаю:

Для того, чтобы получить или изменить записи в БД тебе MetaData вообще не нужна. А нужно тебе после Connection получить Statement или PreparedStatement. В твоем коде это будет так:
Код:
. . .
try
{
  . . .
  Statement stmt = con.createStatement();
Далее будут различия, в зависимости от того, что ты хочешь. Допустим, ты хочешь получить данные из БД. Данные получаются в виде ResultSet. Сделать надо вот что:
Код:
String sql = "select * from table1, table2 where . . ."; //В общем - нужный тебе SQL в явном виде
ResultSet rs = stmt.executeQuery(sql);
ResultSet состоит из набора записей результата. ResultSet может иметь разные свойства, в зависимости от драйвера JDBC и самой базы данных. Наиболее универсальный ResultSet поддерживает только последовательный доступ к записям результата (как и будет в примере JDBC/ODBC, который ты используешь). Тогда действуешь так:
Код:
while(rs.next())
{
  //Здесь обработка текущей записи результата
}
Для обработки текущей записи класс ResultSet предоставляет множество методов вида getType(int colnum). Здесь Type будет соответствовать типу возвращаемого значения, а colnum - номер поля в записи, начиная с 1( :!: ). Детальное описание потребует большой статьи (смотри АПИ для класса ResultSet), но вкратце - возвращаемый тип должен быть или строка, или совместим с реальным типом в базе данных.

Например, я хочу вывести на экран первое (самое первое) и четвертое поле каждой записи результата, разделив их запятой. Тогда обработка текущей записи будет выглядеть так:
Код:
System.out.println(rs.getString(1)+", "+rs.getString(4));
. . .

Вот и все для извлечения данных.

Если хочешь изменять данные в базе, вместо executeQuery() используй executeUpdate(). Это будет справедливо и для insert, update, delete, и даже для create table, drop table и т.д.

Cкажем, хочешь уничтожить из таблицы person все записи, для которых age > 65. Тогда будет такой код:
Цитата
String sql = "delete from person where age>65";
inr kz = stmt.executeUpdate(sql);
. . .

Надеюсь, это сообщение тебе поможет. Если есть конкретные вопросы - пиши. Успехов тебе.
« Последнее редактирование: 23-11-2007 16:00 от Алексей1153++ » Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
RaptuGava
Гость
« Ответ #2 : 29-12-2003 08:46 » 

Отлично
Спасиба!!
помогло теперь всё работает!

и С НОВЫМ ГОДОМ!!!!!!!!
 Ага
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #3 : 29-12-2003 08:55 » 

Пожалуйста, на то и форум.

Тебя тоже с наступающим Новым годом!!!
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines