Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пишу проект базы данных, система и передача данных / 25 сообщений из 58, страница 1 из 3
28.07.2017, 15:23:21
    #39496744
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Здравствуйте. Сейчас передо мной стоит задача написания проекта, который будет выполнять определенный функционал по взаимодействию с различными СУБД, получения и передачи информации по сети. Я хочу поэтапно описывать конкретные задачи и мою реализацию. Возможно кому-нибудь будет полезно, или кто-нибудь подправит и подкорректирует, тем самым улучшит реализацию. Всем спасибо заранее
...
Рейтинг: 0 / 0
28.07.2017, 15:28:16
    #39496749
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
P.S. я реализовываю проект на RadStudio 10.1 Berlin
Программа должна уметь подключаться к большому количеству различных СУБД, причем корректировать настройки СУБД не предоставляется возможным. Затем программа должна уметь выполнять SQL скрипт на СУБД. А результаты выполнения скрипта передать по интернету (в виде файла для начала). Я решил реализовать данную задачу с помощью встроенных компонентов FireDAC
...
Рейтинг: 0 / 0
28.07.2017, 15:29:41
    #39496750
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
1. Соединение с СУБД (будет изменяться)
Код: pascal
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.
Procedure TForm1.ConnectToServer(fConnectString: String; fAutoReconnect:Boolean;
                                 fIsolation:TFDTxIsolation; 
                                 var fResult:String; var fisConnect:boolean);
var
  i:Byte;
begin
  i := 0;
  if FDConnection1.Connected then
    FDConnection1.Connected := False;
  FDConnection1.TxOptions.Isolation := fIsolation;
  FDConnection1.ResourceOptions.AutoReconnect := fAutoReconnect;   
  FDConnection1.Params.Text := fConnectString;
  while (not FDConnection1.Connected) and (i < 2) do 
  //2 попытки на соединение (в случае c FireBird столкнулся с тем, что если с первого раза не соединился, есть шанс 
  //соединиться со второй попытки через непродолжительное время, в моем случае я взял секунду
  //связано с ошибкой - Connection rejected by remote interface)
  try
    if i > 0 then sleep(1000);
    FDConnection1.Connected := true;
  except
    on E:Exception do
    begin
      inc(i);
      fResult := 'ConnectToServer-' + E.Message;
    end;
  end;
  fisConnect := FDConnection1.Connected;
end;
...
Рейтинг: 0 / 0
28.07.2017, 15:31:10
    #39496751
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
в бложик
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 15:31:43
    #39496752
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
2. Выполнение SQL запроса
Код: pascal
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.
procedure TForm1.ExecSQL(fFDConnection: TFDConnection; fSQLText: String;
                         fisOpen:boolean; fFileName,fDelim:String; fBlockSize:Integer; 
                         fisStandartExport:Boolean;
                         var fError: String);
//fSQLText - текст запроса
//fisOpen - True(Запрос Select), False (Запрос DML)
//fFileName - Файл куда сохраняется результат (путь и имя файла, например: d:\1.txt)
  //fDelim - разделитель между значениями полей;
  //fBlockSize - Сколько записей надо накопить перед сбросом в файл
  //fisStandartExport - Выгрузить стандартной выгрузкой FDQuery (на всякий случай)
var
  qrTemp: TFDQuery;
begin
  qrTemp := TFDQuery.Create(Self);
  with qrTemp do
  try
    try
      Connection := fFDConnection;
      SQL.Text := fSQLText;
      DisableControls;
      fFDConnection.TxOptions.ReadOnly := fisOpen;
      if fisOpen then
      begin
        FetchOptions.CursorKind := ckForwardOnly;
        Open;
        if (fFileName <> '') then
          if fisStandartExport then
            SaveToFile(fFileName,sfBinary)//Стандартная выгрузка
          else
          begin
            fError := SaveQueryToFile(fFileName,qrTemp,fDelim,fBlockSize);
            if fError <> '' then
              exit; //Переход на Finally
          end;
        Close;
      end
      else
        ExecSQL;
    except
      on E:Exception do
        fError := 'ExecSQL-'+E.Message;
    end;
  finally
    try FreeAndNil(qrTemp); except end;
  end;
end;



Пример использования
Код: pascal
1.
ExecSQL(FDConnection1,Memo2.Text,True,'d:\MyTxt.txt','~',10000,False,fErrorMessage);
...
Рейтинг: 0 / 0
28.07.2017, 15:35:42
    #39496756
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Мимопроходящий,

Я думаю это больше в форуме, потому что я его только реализовываю и интересно мнение людей, после полной реализации можно собрать в блог и залить
...
Рейтинг: 0 / 0
28.07.2017, 15:39:15
    #39496760
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
3. Выгрузка результата Query в текстовый файл
Код: pascal
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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
Function TForm1.SaveQueryToFile(fFileName: String; fFDQuery: TFDQuery;
                                fDelim:String; fBlockSize:Integer):String;
//fDelim - разделитель между значениями полей;
//fBlockSize - Сколько записей надо накопить перед сбросом в файл
var
  i,fBlock,fFieldCount: Integer;
  OutLine,sTemp: string;
  F:TextFile;
begin
  memo3.Clear;
  //fFDQuery.FetchOptions.CursorKind := ckForwardOnly; И fFDQuery.DisableControls; выполняются до
  //FreeAndNil(fFDQuery); происходит после выполнения процедуры
  fFDQuery.First;
  memo3.Lines.Add('StreamOutline begin - '+datetimetostr(now));
  SaveQueryToFile := '';
  AssignFile(F,fFileName);
  fBlock := 0;
  try
    Rewrite(f);
  except
    on E:Exception do
    begin
      SaveQueryToFile := 'RewriteFile-'+E.Message;
      FreeAndNil(F);
      exit;
    end;
  end;
  try
    try
      fFieldCount := fFDQuery.FieldCount;
      while not fFDQuery.Eof do
      begin
          for i := 0 to fFieldCount - 1 do
          begin
            sTemp := fFDQuery.Fields[i].AsString;
            OutLine := OutLine + sTemp + fDelim;
          end;
          setLength(OutLine, Length(OutLine) - 1);
          OutLine := OutLine + sLineBreak;
          if (fBlock >= fBlockSize) then
          begin
            setLength(OutLine, Length(OutLine) - 1);
            try
              Write(F,OutLine);
            except
              on E:Exception do
              begin
                SaveQueryToFile := 'WriteToFile-'+E.Message;
                FreeAndNil(F);
                exit; //переход на filally
              end;
            end;
            OutLine := '';
            fBlock := 0;
          end
          else Inc(fBlock);
          fFDQuery.Next;
      end;
      if (OutLine <> '') then
        Writeln(F,OutLine); //Дописываем блок в котором не набралось нужное количество записей
    except
      on E:Exception do
      begin
        SaveQueryToFile := 'SaveQueryToFile-'+E.Message;
        FreeAndNil(F);
        exit; //переход на filally
      end;
    end;
  finally
    try CloseFile(F); except end;
  end;
  memo3.Lines.Add('StreamOutline End - '+datetimetostr(now));
end;



Пример использования:
Код: pascal
1.
fError := SaveQueryToFile('d:\1.txt',qrTemp,'~',10000);
...
Рейтинг: 0 / 0
28.07.2017, 15:41:05
    #39496762
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandistя его только реализовываю и интересно мнение людей

Как я уже сказал: спрячь этот код и никому не показывай. Чтобы не было мучительно стыдно
за бессмысленно нажатые кнопки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 15:41:56
    #39496763
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Задача очень простая, да и ее рализация пока у тебя пока самая примитивная.

Навевает в общем:
...
Рейтинг: 0 / 0
28.07.2017, 15:47:07
    #39496768
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
rgreat,
лучше написать не смог. Почему должно быть стыдно? Я не позиционирую себя как профессионала в программировании, реализовываю по мере своих способностей. Если есть чем подсказать буду рад
...
Рейтинг: 0 / 0
28.07.2017, 15:55:02
    #39496774
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Пойми, что сейчас ты гордишься примитивными вещами класса "Хэлло ворлд".
Sandistлучше написать не смог. Почему должно быть стыдно?

Именно потому, что ты выкладываешь на всеобщее обозрение свой лучший код, но при этом те,
кто постарше и поопытнее, напишут то же самое чисто рефлекторно, только код будет короче и
эффективнее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 16:01:42
    #39496779
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Товарищи, каждый имеет право быть чайником и ламером,
тем более невоинствующим. Пусть пишет, как может, и
выкладывает свои достижения. Возможно, кто-то захочет
подсказать и направить в правильное русло. Авось, через
месяц качество его кода вырастет на порядок.

А закрыть/удалить всегда успеется, это несложно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 16:05:14
    #39496782
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Dimitry Sibiryakov,

Так стыдно-то почему должно быть? Да, я не особо опытный и пусть даже не особо смышленый, но ведь для чего нужны форумы? На мой взгляд чтобы делиться информацией с другими. Я поделился, мне ответили, что все очень плохо, что умные дяди напишут лучше и что им не стоит гордиться. А как это должно мне помочь? Ведь если бы я мог, я бы сразу написал очень хороший код. И я не горжусь этим кодом, я написал, чтобы узнать больше и возможно кому-нибудь помочь. И я не считаю, что своим кодом я засирают форум. Я считаю, что засирают форум сообщения, которые пишутся не по теме. Вот как это например.
...
Рейтинг: 0 / 0
28.07.2017, 16:07:49
    #39496786
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
SandistВедь если бы я мог, я бы сразу написал очень хороший код.
это неважно.
В любом случае, какой код ни напиши, он кому-то будет казаться очень плохим
...
Рейтинг: 0 / 0
28.07.2017, 16:09:35
    #39496790
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
SandistТак стыдно-то почему должно быть?

Я даже и не знаю... Почему может быть стыдно за тупую копи-пасту чужого кода и выдавание
его за свой?

В своём коде ты должен знать назначение каждой строчки чтобы уметь объяснить зачем она
именно там и почему она именно такая.

А теперь объясни мне зачем в
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1267396&msg=20683155 вызов
DisableControls?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 16:13:20
    #39496796
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandist,

хочешь кому-то помочь, напиши книгу или выложи готовый проект на публичный ресурс. Формат форума предполагает вопрос-ответ и обсуждение. Пока ты будешь писать программу, твой топ разрастется до размеров первого тома "Война и мир". Вряд ли кто-то из пришедших по ссылкам гугла решиться его читать с самого начала.

Кроме того, маловероятно, что окружающие (кроме тебя самого) будут восторгаться публикуемым тобой кодом. Да еще и советами замучают :)
...
Рейтинг: 0 / 0
28.07.2017, 16:13:23
    #39496797
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Dimitry Sibiryakov,

я извиняюсь, ранее я использовал DataSource и Query передавался в параметре, потом я переписал и создавал Query внутри и уничтожал внутри.
...
Рейтинг: 0 / 0
28.07.2017, 16:19:45
    #39496804
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Док> хочешь кому-то помочь, напиши книгу или
Док> выложи готовый проект на публичный ресурс.

Да какая уж тут книга с такими знаниями.
А готового проекта пока нет, "в процессе".
Так что пусть выкладывает, самые явные
глупости кто-то может и подправить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 16:20:20
    #39496805
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandist,

видимо я написал реально несуразную хрень, раз все так настойчиво пытаются мне об этом сказать
мне интересно, вот я вбил в гугле "выгрузка query в csv delphi"
первая ссылка https://stackoverflow.com/questions/5680017/delphi-tquery-save-to-csv-file
этот код лучше?
...
Рейтинг: 0 / 0
28.07.2017, 16:29:19
    #39496813
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandist> этот код лучше?

Не намного.

P.S. К тебе претензии, потому что топик будет выглядеть
не как "покритикуйте код", а как "как можно/нужно делать".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 16:34:03
    #39496818
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandistя вбил в гугле "выгрузка query в csv delphi"

То есть из стохастического программиста, пишущего код методом тыка ты решил мутировать в
гуглопрограммиста, копипастящего нагугленные куски кода себе в программу. Хрен редьки не
слаще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 16:38:27
    #39496825
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandist,

пиши давай, никого не слушай.
А то местные старпёры развели тут междусобойчик, нормальным парням пройти нельзя.
...
Рейтинг: 0 / 0
28.07.2017, 16:42:33
    #39496827
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
чччДSandist,

пиши давай, никого не слушай.
А то местные старпёры развели тут междусобойчик, нормальным парням пройти нельзя.

"Ты пиши,
пиши,
пиши,
Сочиняй весь век,
Потому что пародист —
Тоже человек.

Он не хочет затянуть
Туже поясок.
Для него
твои стихи —
Хлебушка кусок.

Ты пиши
и мой призыв
Не сочти за лесть,
Потому что пародист
Тоже
хочет
есть!"
А. Иванов
...
Рейтинг: 0 / 0
28.07.2017, 16:43:12
    #39496828
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Dimitry Sibiryakov,

Я изначально был гуглопрограммистом, сказал же, что не претендую на роль проф программиста
ладно, я понял, что не стоит продолжать выкладывать свой говнокод
надеюсь никого не испачкал этим кодом ))
...
Рейтинг: 0 / 0
28.07.2017, 18:08:50
    #39496869
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишу проект базы данных, система и передача данных
Sandist3. Выгрузка результата Query в текстовый файл


За except end я бы оторвал руки сразу, уж извини.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пишу проект базы данных, система и передача данных / 25 сообщений из 58, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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