function AdoToJs(ado: TADOQuery): string;
var
I, J: Integer;
json: string;
begin
json := '{columns:[';
for I := to ado.FieldCount - do
begin
json := json + '{name:"' + ado.Fields[I].FieldName + '",type:"' + DbTypeToStr(ado.Fields[I].DataType) + '"}';
if I < ado.FieldCount - then
json := json + ',';
end;
json := json + '],rows:[';
for I := to ado.RecordCount - do
begin
json := json + '{';
for J := to ado.FieldCount - do
begin
json := json + ado.Fields[J].FieldName + ':"' + ado.FieldByName(ado.Fields[J].FieldName).AsString + '"';
if J < ado.FieldCount - then
json := json + ',';
end;
json := json + '}';
if I < ado.RecordCount - 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 := ;
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 := ;
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的更多相关文章

  1. C# 枚举、字符串、值的相互转换

    using  System; class  Program{    public   enum  Color   {      Red  =   0xff0000 ,      Orange  =   ...

  2. IOS--当字符串返回的数据格式为xml/html时

    今天一来办公室就接到客户返回的BUG,其中一个是因为后台返回的字符串中的数据为xml/html格式.  后来经过百度,发现了两种解决方法,第一种是使用webView,webView中专门为了这种情况准 ...

  3. C# 枚举转字符串

    有时候需要把枚举转字符串,那么如何把枚举转字符串? 枚举转字符串 假如需要把枚举转字符串,可以直接把他进行转换,请看代码 public enum Di { /// <summary> // ...

  4. GetEnumName 枚举名称 字符串

    System.TypInfo.pas System.TypInfo.hpp http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TypIn ...

  5. 2018-2-13-C#-枚举转字符串

    title author date CreateTime categories C# 枚举转字符串 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 ...

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

    这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSeri ...

  7. Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...

  8. iOS基础 - XML & JSON

    一.HTML & XML HTML 是用来描述网页的一种语言 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记 ...

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

    SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. ...

随机推荐

  1. 复制相关参数学习笔记--slave上的参数

    server_id server_uuid   relay_log io_thread 读取过来的本地日志. relaylog文件名前缀,可以是全路径.   relay_log_index relay ...

  2. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(7)结构体

    一.为什么需要结构体? 为了表示一些复杂的事物,而普通类型无法满足实际需求 二.什么叫结构体? 把一些基本类型组合在一起形成的一个新的复合数据类型叫做结构体. 三.如何定义一个结构体? 第一种方式: ...

  3. Install .NET Core SDK on Linux CentOS / Oracle x64 | .NET

    原文:Install .NET Core SDK on Linux CentOS / Oracle x64 | .NET Linux发行版  CentOS / Oracle添加dotnet产品Feed ...

  4. TensorFlow 学习(十三)—— tf.app.flags

    flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_integer('num_hidden_layers', 3, 'number of hid ...

  5. 微信小程序实现城市定位:获取当前所在的国家城市信息

    微信小程序中,我们可以通过调用wx.getLocation()获取到设备当前的地理位置信息,这个信息是当前位置的经纬度.如果我们想获取当前位置是处于哪个国家,哪个城市等信息,该如何实现呢? 微信小程序 ...

  6. ag-admin部署使用心得

    开源地址:https://github.com/wxiaoqi/Spring-Cloud-AG-Admin(后端)https://gitee.com/geek_qi/AG-Admin-v2.0(后端) ...

  7. lucene 7.x 查询

    @Test public void indexSearch() throws IOException, ParseException { //Termquery:精确string查询 // Query ...

  8. dzone Cloud Zone

    dzone Cloud Zonehttps://dzone.com/cloud-computing-tutorials-tools-news有一些统计:https://dzone.com/refcar ...

  9. New in 10.2.2: C++ and Debugger Improvements

    In RAD Studio 10.2.2, we've made a number of great quality improvements for the C++ toolchain and fo ...

  10. 放大缩小,只需要使用这2个函数:SetWindowExtEx、SetViewportExtEx

    相似函数: ScaleWindowExtEx.ScaleViewportExtEx 本例效果图: 代码文件: unit Unit1; interface uses   Windows, Message ...