123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- program testsql;
- {$mode objfpc}
- uses fpodbc,Classes,odbcsql;
- var
- Conn : TODBCConnection;
- St : TODBCSQLStatement;
- FieldNames : TStringList;
- I,Count : Integer;
- procedure DumpFielddef(F : TODBCField);
- begin
- Writeln('Field ',F.Position,' : ',F.Name);
- Writeln('Type : ',F.DataType);
- Writeln('Size : ',F.Size);
- Writeln('Decimal digits : ',F.DecimalDigits);
- Writeln('Nullable : ',F.Nullable);
- end;
- procedure DumpField(F : TODBCField);
- begin
- With F do
- begin
- Write(Name:12,BufType:5,' ');
- If IsNull then
- Writeln('(Null)')
- else
- Case BufType of
- SQL_Smallint : Writeln(AsInteger);
- SQL_Integer : Writeln(AsInteger);
- SQL_BIT : Writeln(AsInteger);
- SQL_CHAR : Writeln(AsString);
- SQL_DOUBLE : Writeln(AsDouble);
- SQL_DATE,
- SQL_TIME,
- SQL_TIMESTAMP,
- SQL_TYPE_DATE,
- SQL_TYPE_TIMESTAMP,
- SQL_TYPE_TIME : Writeln(AsString);
- else
- Writeln('Unknown field type');
- end;
- end;
- end;
- begin
- Conn:=TODBCConnection.Create(Nil);
- Try
- Conn.DSN:='FPC';
- Conn.Active:=True;
- ST:=TODBCSQLStatement.Create(Conn);
- Try
- ST.SQL.Text:='Select * from fpdev order by id';
- Writeln('Opening');
- ST.Open;
- Writeln('Opened');
- Try
- FieldNames:=TStringList.Create;
- Try
- st.GetFieldList(FieldNames);
- Writeln('Found ',FieldNames.Count,' Fields in result set :');
- For I:=0 to FieldNames.Count-1 do
- Writeln(i+1,': ',FieldNames[i]);
- Writeln('End of list');
- Writeln('FieldDefs:');
- with st.fields do
- for I:=0 to COunt-1 do
- DumpFielddef(st.fields.items[i] as TODBCField);
- Writeln('Data dump:');
- Count:=0;
- While not st.eof do
- begin
- Inc(Count);
- Writeln('Record no ',Count,' : ');
- Writeln('Name':12,'Type':5,' Value');
- for I:=0 to st.fields.COunt-1 do
- DumpField(st.fields.items[i] as TODBCField);
- st.fetch;
- end;
- Writeln('End of data');
- finally
- FieldNames.Free;
- Writeln('Freed list');
- end;
- Finally
- st.Close;
- Writeln('Closed');
- end;
- Finally
- ST.Free;
- Writeln('Freed statement');
- end;
- Conn.Active:=False;
- Writeln('Disactivated connection');
- Finally
- Conn.free;
- Writeln('Freed Connection');
- end;
- end.
|