Обсуждение возникших проблем, предложений и ошибок 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
Сообщение
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.