Как выбрать данные из БД?

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
useruser
Сообщения: 1
Зарегистрирован: Пн 16 апр 2018 05:44

Как выбрать данные из БД?

Сообщение useruser » Пн 16 апр 2018 05:56

Мне нужно выбрать все данные из БД. Имя таблицы в БД и имена столбцов известны.

Как это можно сделать?

Мой код

Код: Выделить всё

UniConnection := TUniConnection.Create(nil);
UniConnection.ProviderName := 'DBF';

//Путь к базе такой?
base_path:=ExtractFileDir(ParamStr(0))+'\BASA.DBF'; //C:\mybase\BASA.dbf
UniConnection.Database:=base_path;

//Или всё таки такой?
//UniConnection.Database:='BASA.DBF';


UniConnection.SpecificOptions.Values['DBFFormat'] := 'dfFoxPro2';
UniConnection.SpecificOptions.Values['Direct'] := 'True';
UniConnection.Connect;

//Запрос и его вызов. UniQuery1 есть на форме.
UniQuery1.SQL.Append('SELECT * FROM BASA');
UniQuery1.ExecSQL;
//Тут ошибка

//Или так?
 //UniConnection.ExecSQL('SELECT * FROM BASA');
UniConnection.Disconnect;
Ну и как организовать логику цикла? Пробежать все записи...
Пример на PHP

Код: Выделить всё

$result=mysql_query("'SELECT * FROM BASA"); //Запрос
$select_amt = mysql_num_rows($result); //Кол-во строк
for($select_amt; $select_amt>0; $select_amt--) //Цикл
{
$row=mysql_fetch_assoc($result);  //Нам не надо других запросов - результат то уже есть
$schedule_id=$row['id'];
echo schedule_id; //
}

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Как выбрать данные из БД?

Сообщение AndreyZ » Вт 17 апр 2018 10:24

В качестве значения для свойства TUniConnection.Database необходимо указывать не путь к файлу, а полный путь к папке, в которой лежит этот файл. Т.е. в вашем примере это 'C:\mybase\'

Для выполнения SQL запроса, который возвращает данные, используйте метод TUniQuery.Open. Ниже приведен пример консольного приложения, которое выводит на экран данные из таблицы.

Код: Выделить всё

program DBF_DBFUniProvider;

{$APPTYPE CONSOLE}
{$R *.res}
uses
  SysUtils,
  Uni,
  DBFUniProvider,
  ODBCUniProvider;

var
  UniConnection: TUniConnection;
  UniQuery: TUniQuery;
  base_path: string;
  i: integer;
begin
  UniConnection := TUniConnection.Create(nil);

  UniQuery := TUniQuery.Create(nil);
  UniQuery.Connection := UniConnection;

  UniConnection.ProviderName := 'DBF';

  base_path := ExtractFileDir(ParamStr(0))+'\';
  UniConnection.Database:=base_path;

  UniConnection.SpecificOptions.Values['DBFFormat'] := 'dfFoxPro2';
  UniConnection.SpecificOptions.Values['Direct'] := 'True';
  UniConnection.Connect;

  UniQuery.SQL.Text := 'SELECT * FROM BASA';
  UniQuery.Open;
  while (not UniQuery.Eof) do begin
    for i := 0 to UniQuery.FieldCount - 1 do
        Write(UniQuery.Fields[i].AsString + ' ');
    Writeln;
    UniQuery.Next;
  end;

  UniConnection.Disconnect;

  Readln;

end.

Ответить