Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java JDBC создание базы данных / 21 сообщений из 21, страница 1 из 1
18.08.2005, 15:59
    #33223476
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Позволяет ли JDBC подключиться к sql-серверу и создать базу данных?
В книгах пример найти не удалось.
Создается впечатление, что не позволяет.
Если это действительно так, то подскажите варианты создания базы данных из приложения.
Наверное, можно посредством командной строки.
Какие еще имеются варианты?
...
Рейтинг: 0 / 0
19.08.2005, 14:53
    #33225496
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
создание базы данных это всего лишь выполнение сервером SQL команды CREATE
DATABASE. Если сервер поддерживает эту команду (а она есть в ANSI SQL) то её
можно выполнить хоть из ждбц хоть из склконсоли


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
20.08.2005, 22:46
    #33226754
livan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Конечно позволяет !
можешь попробовать что нибудь в таком плане.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 public   static  Connection createTable( Connection connection ,
                                                   String username ,
                                                   String password ,
                                                   String tableName ,
                                                   String tableFormat ,
                                                   String[] tableRows  ) {
  
   try  {
       statement.execute( " DROP TABLE " + tableName ) ;
  }
   catch ( SQLException sqle ) 
      { sqle.printStackTrace() ; }

   try  {
      Statement statement = connection.createStatement() ;
      String createCommand = " CREATE TABLE " + tablename + " " + tableFormat ;
      statement.execute( createCommand ) ;

      String insertPrefix = " INSERT INTO " + tableName + " VALUES " ;
       for (  int  i= 0 ; i<tableRows.length; i++ ) {
          statement.execute( insertPrefix + tableRows[i] ) ;
      }

       return  connection ;
  }
   catch ( SQLException sqle ) 
      { sqle.printStackTrace() ; }
...
Рейтинг: 0 / 0
21.08.2005, 15:38
    #33226921
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
yelenaПозволяет ли JDBC подключиться к sql-серверу и создать базу данных?
В книгах пример найти не удалось.
Создается впечатление, что не позволяет.
Если это действительно так, то подскажите варианты создания базы данных из приложения.
Наверное, можно посредством командной строки.
Какие еще имеются варианты?

Разные СУБД по разному трактуют термин "база данных". К
примеру то что в PostgreSQL является базой , в Oracle
является схемой в контекте экземпляра базы.
...
Рейтинг: 0 / 0
21.08.2005, 17:47
    #33226945
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
mayton yelenaПозволяет ли JDBC подключиться к sql-серверу и создать базу данных?
В книгах пример найти не удалось.
Создается впечатление, что не позволяет.
Если это действительно так, то подскажите варианты создания базы данных из приложения.
Наверное, можно посредством командной строки.
Какие еще имеются варианты?

Разные СУБД по разному трактуют термин "база данных". К
примеру то что в PostgreSQL является базой , в Oracle
является схемой в контекте экземпляра базы.
Скорее "... в Oracle является схемой в контексте базы данных"
...
Рейтинг: 0 / 0
22.08.2005, 10:05
    #33227197
Евгений Путилин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
livanКонечно позволяет !
можешь попробовать что нибудь в таком плане.
String createCommand = " CREATE TABLE " + tablename + " " + tableFormat ;

То что ты написал позволяет но спашивали совсем другой вопрос :-)
...
Рейтинг: 0 / 0
22.08.2005, 10:12
    #33227215
Евгений Путилин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
1024
создание базы данных это всего лишь выполнение сервером SQL команды CREATE DATABASE. Если сервер поддерживает эту команду (а она есть в ANSI SQL) то её можно выполнить хоть из ждбц хоть из склконсоли

Вопрос как выполнить из JDBC? Example please.
...
Рейтинг: 0 / 0
22.08.2005, 10:45
    #33227306
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Для Cloudscape:

conn.getConnection("jdbc:derby:net://localhost:1527/'c:\work\db\testdb';crea
te=true");

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
22.08.2005, 11:59
    #33227517
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
или как в приведённом выше примере но вместо CREATE TABLE ... написать
CREATE DATABASE ... в соответствии с синтаксисом используемого сервера.


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
22.08.2005, 13:32
    #33227836
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
1024
или как в приведённом выше примере но вместо CREATE TABLE ... написать
CREATE DATABASE ... в соответствии с синтаксисом используемого сервера.


Posted via ActualForum NNTP Server 1.2
ну попробуй бд оракла так создать...
на винде например :)
...
Рейтинг: 0 / 0
22.08.2005, 13:33
    #33227840
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Спасибо всем!
Но...
Прочитайте еще раз мой вопрос.

Чтобы подать команду create database я сначала должна подключиться к серверу!
В стандарте подключения JDBC имя базы уже должно быть указано.
А каким образом я подключусь к несуществующей базе???
...
Рейтинг: 0 / 0
22.08.2005, 13:54
    #33227897
gaper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Ответ полностью определяется той базой, которую Вы используете. Например,
MS SQL - "да", но Oracle - "нет". Также он зависит от Вашего понимания этого термина.

В общем случае, думаю, Вы дали правильный ответ: "Нет".
...
Рейтинг: 0 / 0
22.08.2005, 18:19
    #33228677
Евгений Путилин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
gaperОтвет полностью определяется той базой, которую Вы используете. Например,
MS SQL - "да", но Oracle - "нет". Также он зависит от Вашего понимания этого термина.

Что за термин используется? RDB или RDBMS, или еще какой нибуть термин?

gaper
В общем случае, думаю, Вы дали правильный ответ: "Нет".

Согласен JDBC не содержит в себе декларирования создания DB. И каждй вендор DB, несет внутри себя расширения которые могут позволить это сделать.
...
Рейтинг: 0 / 0
22.08.2005, 18:54
    #33228756
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Из JDBC можно получить Connection к MSSQL Server 2000 без указания имени БД.
Только для этого нужно установить соответствующий JDBC-driver (по-моему, он идет в MSSQL Server 2000 Service Pack 3). Там url к БД имеет вид:

Код: plaintext
jdbc:microsoft:sqlserver://host: 1433 

То есть без указания самой БД. А потом можно выбрать созданную с помощью запроса БД с помощью setCatalog(String).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
     ...
     String _driverClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
     String _url = "jdbc:microsoft:sqlserver://hostname:1433";
     String _userName = "user";
     String _password = "magic word";
     String _db = "myDB";

      try  {
       Driver _driver = (Driver) Class .forName(_driverClassName).newInstance();
       DriverManager.registerDriver(_driver);

       Connection _conn = DriverManager.getConnection(_url, _userName, _password);
       
       // Создаем БД
       Statement _stmnt = _conn.createStatement("CREATE DATABASE " + _db);
       _stmnt.execute();
       
       // Выбираем БД
       _conn.setCatalog(_db);

     }  catch  (Exception e) {
       e.printStackTrace();
     }
...
Рейтинг: 0 / 0
22.08.2005, 19:57
    #33228862
gaper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Евгений Путилин gaperОтвет полностью определяется той базой, которую Вы используете. Например,
MS SQL - "да", но Oracle - "нет". Также он зависит от Вашего понимания этого термина.

Что за термин используется? RDB или RDBMS, или еще какой нибуть термин?

Имелось в виду соответствие терминов jdbc с терминологией конкретного сервера базы данных. В терминах jdbc, иногда, можно создать catalog базы данных, но саму базу - нет. Например, jdbc-catalog соответствует MS SQL базе данных.

В свою очередь, автор мог подразумевать:
RDBS (вряд ли)

RDB = database

database catalog
...
Рейтинг: 0 / 0
23.08.2005, 10:07
    #33229263
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
2 yelena:

Какой сервер БД вы используете?
...
Рейтинг: 0 / 0
23.08.2005, 16:37
    #33230439
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
2 Acid_v:
сервер MySQL

спасибо за правильное понимание поставленного вопроса и исчерпывающий ответ

база данных действительно может быть создана таким образом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        String URL = "jdbc:mysql://localhost/";
        String Driver = "com.mysql.jdbc.Driver";
        String User = "root";
        String Password = "";

         try  {
             Class .forName(Driver);
            java.util.Properties connectionProperties =  new  java.util.Properties();
            connectionProperties.put("driver", Driver);
            connectionProperties.put("user", User);
            connectionProperties.put("password", Password);
            Connection con = DriverManager.getConnection(URL, connectionProperties);
            
            String query = "CREATE DATABASE my_test";

            PreparedStatement ps = con.prepareStatement(query);
            ps.executeUpdate();            
        }  catch  (Exception ex) {
            ex.printStackTrace();
        }
...
Рейтинг: 0 / 0
23.08.2005, 18:05
    #33230641
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Это не база данных...
Это блокнот!
...
Рейтинг: 0 / 0
25.08.2005, 11:07
    #33233483
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
Вот код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
conn = DriverManager.getConnection("jdbc:firebirdsql:192.168.0.9/3050:d:/temp/telco-prob/telco.gdb","sysdba","masterkey");
DatabaseMetaData metaData = conn.getMetaData();
ResultSet rs = metaData.getTables( null ,  null , "%",  new  String[] {"TABLE"});
Array list =  new  ArrayList();

 while (rs.next()) {
  list.add(" " + rs.getString("TABLE_NAME"));
}

потом страная вещь получается ежели попробовать получить имена столбцов конкретной таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 for  ( int  i =  0 ; i < list.size(); i++) {
  String s = (String) list.get(i);
  rs = metaData.getColumns( null ,  null , s,  null );

   while (rs.next()) {
    System.out.println(rs.getString("COLUMN_NAME"));
  }
  rs.close();
}

даже внутрь цикла while не заходит
а вот если написать конкретное имя таблицы то работает нормально

Код: plaintext
1.
2.
s = "TB_CONS";
rs = metaData.getColumns( null ,  null , s,  null );

или

Код: plaintext
1.
rs = metaData.getColumns( null ,  null , "TB_CONS",  null );
то работает

я пробовал и Strings = list.get(i).toString()
ежели list.get(i).toString() или (String) list.get(i) печатать в консоль то нормальные
имена таблиц а подставляешь в rs = metaData.getColumns(null, null, s, null);
не работает
...
Рейтинг: 0 / 0
25.08.2005, 11:42
    #33233611
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
llemingВот код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
conn = DriverManager.getConnection(/* ... */);
DatabaseMetaData metaData = conn.getMetaData();
ResultSet rs = metaData.getTables( null ,  null , "%",  new  String[] {"TABLE"});
Array list =  new  ArrayList();

 while (rs.next()) {
  list.add(/*тут->*/" " + rs.getString("TABLE_NAME"));
}

зачем здесь пробел?
...
Рейтинг: 0 / 0
25.08.2005, 12:57
    #33233947
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java JDBC создание базы данных
тимм спасибо
я примечик с книжки взял и не мог никак понять
где же я ошибся :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java JDBC создание базы данных / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]