Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2016, 13:32   #1
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию Подключение к MySQL

Доброго времени суток.
Столкнулся с проблемой, хочу подключится к серверу mysql НО не к определенной базе, т.е я хочу видеть доступные мне базы и уже к ним потом коннектится (вывод доступных мне бд к примеру в комбобокс).
Как мне организовать такое подключение? потому что без ввода имени бд, подключение организовывать не хочет.
Я знаю что есть команда SHOW DATABASES;
но драйвер не позволяет мне подключится без имени БД предварительно введенной.

Какие то есть идеи?
viks1 вне форума Ответить с цитированием
Старый 17.04.2016, 14:35   #2
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Вот аналог ПХП
Код:
<?php
// Без использования mysql_list_dbs()
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$res = mysql_query("SHOW DATABASES");

while ($row = mysql_fetch_assoc($res)) {
    echo $row['Database'] . "\n";
}
viks1 вне форума Ответить с цитированием
Старый 17.04.2016, 15:43   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зависит от используемой библиотеки/компонента.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.04.2016, 00:21   #4
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Я таки реализовал то что хотел.
Шаг действий такой:
качаем libmysql.dll
качаем архив, который я прикрепил к сообщению.
В архиве есть mysql.pas - подгружаем его к проекту, делаем uses mysql

https://www.opennet.ru/docs/RUS/mysqldev/glava06.html
тут описание всех функций и методов которые вам может пригодятся.

Но это не вся моя задача )
в конечном итоге, должен выйти экспорт из mysql в access

Я придумал такой план действий:
считываю таблицы (gettablesname)
считываю поля (getfieldsname)
вытягиваю тип данных каждого поля, что бы сделать правильную структуру данных
вот на этом моменте как мне узнать, какого типа данных поле?
может mysql умеет это сам делать путем запроса, или у adoquery есть свои примочки , подскажите как это лучше реализовать
Вложения
Тип файла: zip mysql.zip (87.1 Кб, 7 просмотров)
viks1 вне форума Ответить с цитированием
Старый 19.04.2016, 00:35   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

SHOW COLUMNS
SHOW CREATE TABLE
INFORMATION_SCHEMA
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.04.2016, 17:26   #6
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Проблемы
я в тупике
пишу конвертор MySQL to Access

Конструирую запрос динамически на создание таблицы
(в код можете не вдаваться)
Код:
ADOConnectionMySQL.GetFieldNames(tb[i], fl);
  with ADOQuery do
  begin
    for i := 0 to tb.Count - 1 do
    begin
      ADOConnectionMySQL.GetFieldNames(tb[i], fl);
      query.Add('CREATE TABLE ' + tb[i] + ' (');
      for j := 0 to fl.Count - 1 do
      begin
        Active := false;
        SQL.Clear;
        SQL.Text := 'SELECT `' + fl[j] + '`' + 'FROM `' + tb[i] + '` ;';
        Active := True;
        FindFirst;
        if RecordCount <> 0 then
        begin
          case FieldByName(fl[j]).DataType of
            ftAutoInc:
              begin
                Memo1.Lines.Add(FieldByName(fl[j]).AsString);
                query.Add(fl[j] + ' Integer PRIMARY KEY NOT NULL');
              end;
            ftInteger:
              begin
                Memo1.Lines.Add(IntToStr(FieldByName(fl[j]).AsInteger));
                query.Add(', ' + fl[j] + ' Integer');
              end;
            ftDateTime:
              begin
                Memo1.Lines.Add(FieldByName(fl[j]).AsString + ' ftDateTime ');
                query.Add(', ' + fl[j] + ' DATETIME');
              end;
            ftDate:
              begin
                Memo1.Lines.Add(FieldByName(fl[j]).AsString);
                query.Add(', ' + fl[j] + ' DATETIME');
              end;
            ftWideString:
              begin
                Memo1.Lines.Add(FieldByName(fl[j]).AsString + ' ftWideString ' +
                  IntToStr(FieldByName(fl[j]).Size));
                query.Add(', ' + fl[j] + ' char(' + IntToStr(FieldByName(fl[j])
                  .Size) + ') ');
              end;
          end;
        end;
      end;
      fl.Clear;
      query.Add(');');
      Memo2.Lines.AddStrings(query);
      ADOQueryAccess.Connection := ADOConnectionAccess;
      with ADOQueryAccess do begin
        active := false;
        SQL.Clear;
        SQL.AddStrings(query);
        ExecSQL;
      end;
      query.Clear;
    end;
    DataSourceMySQL := TDAtaSource.Create(self);
    DataSourceMySQL.DataSet := ADOQuery;
    DataSourceMySQL.Enabled := True;
  end;
В мемо, сам себе вывожу пример сконструированного запроса
Беру первый запрос
Код:
CREATE TABLE comments (
TableID Integer PRIMARY KEY NOT NULL
, CrewID Integer
, CDate DATETIME
, Comments char(150) 
, Operator char(45) 
);
вставляю в аксес редактор запросов
он возмущается на "TableID"
Когда меняю это слово на какое то другое, запрос принимается, и таблица создается.

Что за магия? Это запрещенное слово в акксесе ? или что?
viks1 вне форума Ответить с цитированием
Старый 23.04.2016, 17:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

https://support.office.com/ru-ru/art...7-da237c63eabe

https://support.office.com/ru-ru/art...2-a03f8f07cfc8

В квадратные скобки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.04.2016 в 17:33.
Аватар вне форума Ответить с цитированием
Старый 29.04.2016, 00:54   #8
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

не буду плодить темы.
Продолжая разрабатывать данное ПО, я столкнулся с проблемой, что не у всех стоит драйвер MySQL, по этому прибегнул к FireDAC.

Все было бы ничего, но вдруг при создании таблицы , FDQuery, при моем банальном запросе SELECT выдает ошибку, что якобы мое поле содержит лишние символы , " ``Dec``"
Я стал искать причину их появления. .
Перед этой таблицей еще штук 8 таблиц, и все проходят нормально.
А эта не проходит.

сюда я загружаю поля, из таблицы
Код:
FDConnectionMySQL.GetFieldNames('', '', tb[i], '', fl);
Тут я делаю запрос:
Код:
SQL.Text := 'SELECT `' + fl[j] + '`' + 'FROM `' + tb[i] + '` ;';
Ошибка следующая:


Хотя, никаких доп знаков в таблице нет:


Прошу помощи с идеями, что это может быть. Возможно причина на поверхности, а я просто не вижу.
Заранее спасибо!
viks1 вне форума Ответить с цитированием
Старый 29.04.2016, 06:35   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

dec зарезервированное слово в mysql. Видимо средство получения имен полей возвращает его уже в кавычках. Проверяй их наличие при формировании запроса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 29.04.2016 в 06:47.
Аватар вне форума Ответить с цитированием
Старый 29.04.2016, 21:23   #10
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
dec зарезервированное слово в mysql. Видимо средство получения имен полей возвращает его уже в кавычках. Проверяй их наличие при формировании запроса
Спасибо, буду проверять значит.
viks1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение к MySql bill C/C++ Базы данных 1 16.04.2013 00:11
Подключение mysql sir.andrey Помощь студентам 2 17.10.2012 17:18
Подключение к удалённой MySQL Darcangel БД в Delphi 1 10.03.2012 18:40
Подключение к MySQL ziganurov2011 PHP 4 18.09.2011 14:43
Delphi и подключение к mysql Drek Помощь студентам 2 07.11.2010 23:36