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

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

时间: 2024-08-29 13:27:03

枚举与字符串转及RecordSet转XML,JSON的相关文章

c++枚举转换为字符串

 enum EM_DEMO { EM_INDEX1 = 1, EM_INDEX2  = 2, EM_INDEX3  = 3, EM_INDEX4  = 4 } //多字节 #define _TXT__(x) #x #define EMTOSTR(EM) _TXT__(EM) //多字节或 unicode #define _TXT__(x) _T(#x) #define EMTOSTR(EM) _TXT__(EM) //调用案例 if ( _tcscmp( _T("EM_INDEX1"

C# 枚举转字符串

有时候需要把枚举转字符串,那么如何把枚举转字符串? 枚举转字符串 假如需要把枚举转字符串,可以直接把他进行转换,请看代码 public enum Di { /// <summary> /// 轨道 /// </summary> Railway, /// <summary> /// 河流 /// </summary> River, } static void Main(string[] args) { Console.WriteLine(Di.Railway.

jsonObject关于xml,json,bean之间的转换关系

1.json转换为JAVA @Test public void jsonToJAVA() { System.out.println("json字符串转java代码"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}";//添加转义字符 JSONObject jsonObj = JSONObject.fromObject

(转)iOS XML JSON SQLite CoreData 数据持久化

一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 * Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下的文件不会在应用退出删除 2.相关方法:       # 使用NSSearchPathForDiretoriesI

XML &amp;&amp; Json

一.XML XML即可扩展标记语言(eXtensible Markup Language).标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等.如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性.XML是从SGML中简化修改出来的.它主要用到的有XML.XSL和XPath等. 上面这段是对XML的一个基本定义,一个被广泛接受的说明.简单说,XML就是一种数据的描述语言,虽然它是

Silverlight项目笔记7:xml/json数据解析、MVVM下实现多级树形结构TreeView、忽视引用类型导致数据绑定错误、通过流或动态空间加载图片、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

涉及的内容主要有: 1.xml/json数据解析 2.多级树形结构TreeView 3.忽视引用类型导致数据绑定错误 4.通过流或动态空间加载图片 5.虚拟目录设置 6.silverlight安全机制引发的问题 7.webclient缓存问题 1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应节点的数据集合,再通过Element这个方法对数据集合进

iOS XML/JSON解析

<a target=_blank href="http://download.csdn.net/detail/vaercly/7908319">点击打开下载链接iOS,XML/JSON解析</a> // FInterPreterVC.m // FInterpreter // // Created by lanouhn on 14-9-11. // Copyright (c) 2014年 [email protected] 陈聪雷. All rights rese

REST Adapter实现SAP PI中的增强XML/JSON格式转换

SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. 然而,观察下网上有关REST Adapter的相关问题,可以得出一个结论:XML消息处理后生成的JSON输出并非总是正确的,有时候它会把人引入歧途.SAP积极地增强了REST Adapter的各方面功能——定制化和特性丰富的JSON处理就是其中一个重点领域.许多这样的特性已经在记录在SAP Hel

iOS开发笔记3:XML/JSON数据解析

这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSerialization. 1.XML解析之NSXMLParser NSXMLParser是iOS原生的XML解析方式,采用SAX方式进行解析,特点是解析的时候从根元素开始,按顺序依次对每一个元素进行解析. 以下图所示XML文档为例进行解析 (1)首先是实例化一个NSXMLParser,设置代理监听解析过