powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Код разбора файла, состоящего из последовательности sql-запросов
7 сообщений из 7, страница 1 из 1
Код разбора файла, состоящего из последовательности sql-запросов
    #32963769
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потребовалось мне прочитать и выполнить содержимое файла, состоящего из SQL-запросов типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE apps_list (
  app_id int( 11 ) NOT NULL auto_increment,
  app_title varchar( 255 ) NOT NULL default '',
  PRIMARY KEY  (app_id),
  UNIQUE KEY app_title (app_title)
) TYPE=InnoDB;

INSERT INTO apps_list VALUES ( 13 ,'перечень должностей и профессий работников, работающих в ночное время');
INSERT INTO apps_list VALUES ( 14 ,'перечень должностей работников, которым предоставляется дополнительный отпуск за ненормированный рабочий день');
INSERT INTO apps_list VALUES ( 17 ,'перечень профессий и должностей с правом на дополнительный отпуск и сокращенный рабочий день');
INSERT INTO apps_list VALUES ( 16 ,'перечень профессий и должностей с правом на досрочную трудовую пенсию');
INSERT INTO apps_list VALUES ( 20 ,'перечень профессий и должностей с правом на лечебно-профилактическое питание');
т.е. по сути это дамп части базы данных
Сервер БД у меня MySQL.
Для этого я написал специальный код, который позволяет все это разобрать.
Но только потом до меня дошло, что это можно сделать стандартными средствами типа mysql.exe :).
Я конечно у себя все это убрал и сделал через вызов mysql.exe, но это может кому-нибудь пригодиться и я решил выложить код.
Сервер БД MySQL, компилятор C++Builder
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
/*основной смысл алгоритма состоит в том, что мы "откусываем" начальную часть запроса до символа "'"    
или же до закрывающего символа ";"
если мы находимся внутри апострофов, значит игнорируем закрывающий символ ";",
 т. к. он просто является частью текстового поля
qq - любой компонент, позволяющий выполнять sql-запросы 
(в данном случае я использовал ZQuery из библиотеки Zeos)
Str - TStrings, содержит текст файла*/
      qq->SQL->Clear();
      AnsiString query="";
      AnsiString CurString;
      bool StrValue=false; //находимся ли мы между символов ' '
      for (int i= 0 ;i<Str->Count;i++)
      {
         CurString=Str->Strings[i];
         while (CurString.Pos(" ") ==  1 ) CurString.Delete( 1 , 1 );
         while (CurString!="" && CurString.Pos("--") !=  1 )
           if (StrValue)   //если сейчас находимся между ' '(одиночными апострофами), то игнорируем символ ";"
           {
              if (int p=CurString.Pos("'"))
              {
                 if (CurString.SubString(p-1,1)!="\\")  //если это не служебный символ, а просто входит в текстовое поле, то 

игнорируем его
                 {
                    StrValue=false;
                 }
                 query += CurString.SubString(1,p);
                 CurString.Delete(1,p);
              }
              else
              {
                 query += CurString;
                 CurString="";
              }
           }
           else
              if (int k=CurString.Pos("'")) //ищем следующий апостроф
              {
                 if (CurString.SubString(k- 1 , 1 )!="\\")
                 {
                    StrValue=true;
                 }
                 query += CurString.SubString( 1 ,k);
                 CurString.Delete( 1 ,k);
              }
              else
                if (int p=CurString.Pos(";")) //нашли закрывающий символ sql-запроса
                {
                   query += CurString.SubString( 1 ,p- 1 );
                   CurString.Delete( 1 ,p);
                   qq->SQL->Add(query);
                   qq->ExecSQL();
                   query="";
                   qq->SQL->Clear();

                }
                else
                {
                   query += CurString;
                   CurString="";
                }
      }
...
Рейтинг: 0 / 0
Код разбора файла, состоящего из последовательности sql-запросов
    #32964048
Фотография josia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем бесплатно раздавать то, что можно продать за деньги ? Данный код легко может быть использован в бизнес приложениях, за счет своей общности и легкой расширяемости, а также в преподавательской деятельности, за счет своей прозрачности.
...
Рейтинг: 0 / 0
Код разбора файла, состоящего из последовательности sql-запросов
    #32964083
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готов заплатить за этот исходник 0.99$!
...
Рейтинг: 0 / 0
Код разбора файла, состоящего из последовательности sql-запросов
    #32964086
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Код разбора файла, состоящего из последовательности sql-запросов
    #32964200
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГотов заплатить за этот исходник 0.99$!
Готов принять эту сумму! (на кружку пива хватит)
...
Рейтинг: 0 / 0
Код разбора файла, состоящего из последовательности sql-запросов
    #32964239
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cauchy maytonГотов заплатить за этот исходник 0.99$!
Готов принять эту сумму! (на кружку пива хватит)

Давай номер своего счета!
...
Рейтинг: 0 / 0
Код разбора файла, состоящего из последовательности sql-запросов
    #32964874
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скопировал , код себе , пошел продавать


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Код разбора файла, состоящего из последовательности sql-запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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