码迷,mamicode.com
首页 > Web开发 > 详细

枚举与字符串转及RecordSet转XML,JSON

时间:2017-07-06 16:54:30      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:record   html   ado   save   begin   obj   data   result   nbsp   

function AdoToJs(ado: TADOQuery): string;
var
  I, J: Integer;
  json: string;
begin
  json := {columns:[;
  for I := 0 to ado.FieldCount - 1 do
  begin
    json := json + {name:" + ado.Fields[I].FieldName + ",type:" + DbTypeToStr(ado.Fields[I].DataType) + "};
    if I < ado.FieldCount - 1 then
      json := json + ,;
  end;
  json := json + ],rows:[;
  for I := 0 to ado.RecordCount - 1 do
  begin
    json := json + {;
    for J := 0 to ado.FieldCount - 1 do
    begin
      json := json + ado.Fields[J].FieldName + :" + ado.FieldByName(ado.Fields[J].FieldName).AsString + ";
      if J < ado.FieldCount - 1 then
        json := json + ,;
    end;
    json := json + };
    if I < ado.RecordCount - 1 then
      json := json + ,;
  end;
  json := json + ]};
  Result := json;
end;

function AdoToXml(ado: TADOQuery): string;
begin
  Result := RecordsetToXMLString(ado.Recordset);
end;

function XmlToAdo(xml: string): TADOQuery;
var
  ado: TADOQuery;
begin
  ado := TADOQuery.Create(nil);
  ado.Recordset := RecordsetFromXMLString(xml);
  Result := ado;
end;

function RecordsetToXMLString(const Recordset: ADOInt._Recordset): string;
var
  RS: Variant;
  Stream: TStringStream;
begin
  Result := ‘‘;
  if Recordset = nil then
    Exit;
  Stream := TStringStream.Create(‘‘, TEncoding.UTF8);
  try
    RS := CreateOleObject(ADODB.Recordset);
    RS := Recordset;
    RS.Save(TStreamAdapter.Create(Stream) as IUnknown, adPersistXML);
    Stream.Position := 0;
    Result := Stream.DataString;
  finally
    Stream.Free;
  end;
end;

function RecordsetFromXMLString(const xml: string): ADOInt._Recordset;
var
  RS: Variant;
  Stream: TStringStream;
begin
  Result := nil;
  if xml = ‘‘ then
    Exit;
  try
    Stream := TStringStream.Create(xml, TEncoding.UTF8);
    Stream.Position := 0;
    RS := CreateOleObject(ADODB.Recordset);
    RS.Open(TStreamAdapter.Create(Stream) as IUnknown);
    Result := IUnknown(RS) as ADOInt._Recordset;
  finally
    Stream.Free;
  end;
end;

function DbTypeToStr(dbtype: TFieldType): string;
begin
  Result := GetEnumName(TypeInfo(TFieldType), Ord(dbtype))
end;

function StrToDbType(const dbtype: string): TFieldType;
begin
  Result := TFieldType(GetEnumValue(TypeInfo(TFieldType), dbtype));
end;

 

 

http://www.cnblogs.com/toosuo/archive/2012/02/18/2357315.html

枚举与字符串转及RecordSet转XML,JSON

标签:record   html   ado   save   begin   obj   data   result   nbsp   

原文地址:http://www.cnblogs.com/findumars/p/7126915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!