http://docwiki.embarcadero.com/CodeExamples/XE5/en/Code_Examples_Index#InputBox_.28C.2B.2B.29
http://docwiki.embarcadero.com/CodeExamples/XE5/en/Main_Page
http://docwiki.embarcadero.com/CodeExamples/XE4/en/Main_Page
里边很多官方例子
his section contains:
- Code examples for commonly used members of the FMX, VCL, and RTL libraries
- Application samples - descriptions of the samples (or demos) that accompany the product
Code Examples List
- Code Examples Index lists all examples and the components they use.
Code Examples Listed by Functionality
- Code Examples by Functionality lists functions used in the examples, and the examples that use the function.
Code Examples Listed by Version
- New for XE5 Examples
- New for XE4 Examples
- New for XE3 Examples
- New for XE2 Examples
- New for XE Examples
- 2010 and XE-compatible Examples
Code Examples and Application Samples Listed by Language
- Delphi Code Examples and Application Samples
- C++ Code Examples and Application Samples
- All Documented Application Samples
Data.Win.ADODB.TADOQuery
![TADOQuery](https://i-blog.csdnimg.cn/blog_migrate/8518ed48e5ae9a73966fac5662449c60.png)
Delphi
TADOQuery = class(TCustomADODataSet)
C++
class PASCALIMPLEMENTATION TADOQuery : public TCustomADODataSet
Contents[hide] |
Properties
Type | Visibility | Source | Unit | Parent |
---|---|---|---|---|
class | public |
Data.Win.ADODB.pas
Data.Win.ADODB.hpp
| Data.Win.ADODB | Data.Win.ADODB |
Description
TADOQuery provides the means for issuing SQL against an ADO data store.
Use TADOQuery to access one or more tables in a data store using SQL statements.
Retrieve data from tables in an ADO data store using SELECT statements. Perform actions on tables and other metadata objects in an ADO data store with statements like INSERT, DELETE, UPDATE, ALTER TABLE, and CREATE TABLE. Execute stored procedures.
See Also
Code Examples
ADOQuery (C++)
Uses:
- Data.DB.TCustomConnection.Connected
- Data.DB.TCustomConnection.LoginPrompt
- Data.Win.ADODB.TADOConnection
- Data.Win.ADODB.TADOConnection.ConnectionString
- Data.Win.ADODB.TADOQuery
- Data.Win.ADODB.TADOQuery.SQL
- Data.Win.ADODB.TCustomADODataSet.Connection
- Data.Win.ADODB.TCustomADODataSet.Parameters
- Data.Win.ADODB.TCustomADODataSet.Prepared
- Data.Win.ADODB.TParameter
- 2.479 TStringBuilder (C++)
- 2.480 TStringBuilderClickCount (C++)
- 2.481 TStringListAdd (C++)
- 2.482 TStringListSorted (C++)
- 2.483 TStringsAssign (C++)
- 2.484 TStringsEncoding (C++)
- 2.485 TStringsMove (C++)
- 2.486 TTabSheetPageControl (C++)
- 2.487 TTcpClientSendStream (C++)
- 2.488 TTcpServer (C++)
- 2.489 TThreadList (C++)
- 2.490 TThreadPriority (C++)
- 2.491 TThreadYield (C++)
- 2.492 TToolButtonCreate (C++)
- 2.493 TTrayIcon (C++)
- 2.515 TXMLDocument use case (C++)
- 2.516 TXMLDocument xml declaration (C++)
- 2.517 TXMLDocumentAddChild (C++)
- 2.518 TXMLDocumentAsyncLoadState (C++)
- 2.519 TXMLDocumentChildNodes (C++)
- 2.520 TXMLDocumentCreateElement (C++)
- 2.521 TXMLDocumentCreateNode (C++)
- 2.522 TXMLDocumentDOMDocument (C++)
- 2.523 TXMLDocumentDOMVendor (C++)
- 2.524 TXMLDocumentGeneratePrefix (C++)
- 2.525 TXMLDocumentGetDocBinding (C++)
- 2.526 TXMLDocumentIsEmptyDoc (C++)
- 2.527 TXMLDocumentLoadFromFile (C++)
- 2.528 TXMLDocumentLoadFromStream (C++)
- 2.529 TXMLDocumentLoadFromXML (C++)
- 2.530 TXMLDocumentNode (C++)
- 2.531 TXMLDocumentNodeIndentStr (C++)
- 2.532 TXMLDocumentParseOptions (C++)
- 2.533 TXMLDocumentRefresh (C++)
- 2.534 TXMLDocumentRegisterDocBinding (C++)
- 2.535 TXMLDocumentResync (C++)
- 2.536 TXMLDocumentSaveToFile (C++)
- 2.537 TXMLDocumentSaveToStream (C++)
- 2.538 TXMLDocumentSaveToXML (C++)
- 2.539 TypInfoGetEnumName (C++)
- 2.540 UnDock (C++)
- 2.541 UnionRect (C++)
- 2.542 UpCase (C++)
- 2.543 UpperCase (C++)
- 2.544 UsingDialogs (C++)
- 2.545 UsingGUIDs (C++)
- 2.546 UsingPictureDialogs (C++)
- 2.547 VariantArrayLockUnlock (C++)
- 2.548 VariantArrays (C++)
- 2.549 VariantStrings (C++)
- 2.550 VariantsVarToDateTime (C++)
- 2.551 VCL.TMouseEvent (C++)
- 2.552 VCLButtons(C++)
- 2.553 VCLStringHandling (C++)
- 2.554 VertScrollBar (C++)
- 2.555 ZLibCompressDecompress (C++)
void Test_CreateNode() { _di_IXMLDocument document; _di_IXMLNode node; document = interface_cast<Xmlintf::IXMLDocument>(new TXMLDocument(NULL)); document->Active = true; node = document->CreateElement("TestElement", ""); document->DocumentElement = node; node->ChildNodes->Add(document->CreateNode("TestComment", ntComment)); // Display document content. printf("%ls\n", document->XML->Text); }
NodeType | NameOrData |
---|---|
ntElement | The tag name |
ntAttribute | The attribute name |
ntText | The value of the node |
ntCData | The value of the CDATA section |
ntEntityRef | The name of the referenced entity |
ntProcessingInstr | The target of the processing instruction |
ntComment | The value (text) of the comment |
ntDocFragment | Not used |
ntElement | The namespace URI that qualifies the tag name |
ntAttribute | The namespace URI that qualifies the attribute name |
ntProcessingInstr | The content of the processing instruction, except for the target |
转自 http://www.west263.com/www/info/57643-1.htm
Delphi中对XML文件的解析做的很好,比直接使用MS的MSXML2_TLB中的接口要方便很多,现称述于下面。
在讲之前先给出一个XML实例,在讲某些部分是要结合实例比较容易理解。
1<?xml version="1.0" encoding="gb2312"?> <!--文档版本信息, 注释格式同HTML-->
2<XMLPackage>
3 <clinetinfo ip=”202.101.100.90” handler=”si” unit=”江苏网商软件”/>
4 <data>
5 <row id=”1” name="太阳" sex=”男” age="24" duty="软件工程师"/>
6 <row id=”2” name="月亮" sex=”女” age="25" duty="部门经理"/>
7<!--data中包含了元素 row的两个实例,通过属性id予以区分 -->
8 </data>
9 <memo length=”16” color=” $0034494B”>Hello! I am yaya! </memo> <!-- 这个元素中间包含的内容成为Text,而且也含有两个属性 length, color, 当然也可以没有属性 -- >
10 <Actions acition=”update/insert”/> <!—该元素描述了一动作控制信息-->
11</XMLPackage>
TXMLDocument控件提供了我们两种常用做法:一、直接用这个类封装的属性和方法来读写XML文件,我把它称为自己解析法;二、用控件提供的XML Data Binding Wizard来创建一个适合用户自己的接口单元,然后按照这个接口单元提供的许多接口来实现对同类XML文件的读写,十分方便,但有局限性,我把它称为控件解析法。我重点讲第一种使用方法。
一、自己解析法:
下面我将按创建、读取、修改、添加和删除这五个动作来分三类讲述。
(1)创建和添加:
首先要创建XML实例,可以这样动态创建:
TXMLDocument.Create(‘F:\Work\费亚的文件\task\XML\lab_xml\country.xml’);
也可以这样动态创建:
Xml:= TXMLDocument.Create(nil);
Xml. LoadFromFile(‘F:\Work\费亚的文件\task\XML\lab_xml\country.xml’);
当然也可以从Internet面板上拖放一个TXMLDocument控件,然后再为FileName或XML属性赋值,比如对象名仍然叫xml(下都不说明都这样默认):
Xml.FileName:= F:\Work\费亚的文件\task\XML\lab_xml\country.xml;
至于它的另一个属性XML是用来直接赋XML语言,这个用法对我们暂不重要。创建完XML实例后要注意打开Active属性:
Xml.active:=true;
这样下面对文件的读写操作才有效。如果没有XML文件可以用来创建XML的实例,即要建立XML文件,可以选择在上面一句之后,对XML实例操作,操作完毕之后加上:
Xml.SaveToFile(‘F:\Work\费亚的文件\task\XML\lab_xml\country.xml’);
下面就是创建节点了,需要结合上面的XML文件实例来讲述。首先一个XML文件只能有一个根节点,比如文件实例中2行的XMLPackage是这样被创建的:
Var rootnode:XMLNode;
Rootnode:=xml.CreateNode(‘XMLPackage’);
Xml. DocumentElement:=rootnode;
接着我们创建不同类型的子节点,前面的实例中的第9行的节点比较有代表性,它是一个带有文本的子节点,同时又带有两个属性节点,我们来看看它是怎么被创建的,首先创建一个根节点:
xml.Active:=true;
xml.DocumentElement:=xml.CreateNode(XMLPacage);
接着我们创建memo子节点:
Var node:IXMLNode;
node:=xml.CreateNode(memo);
xml.DocumentElement.ChildNodes.Add(node);
这种创建儿子节点的方法比较好,当然还可以:
xml.DocumentElement.AddChild(XMLPacage);
来创建,建议使用第一种,CreateNode方法的用法是很丰富的,主要看它的第二个参数,上面其实是用了默认参数,下面我再看看怎样创建这个子节点的文本的:
node.ChildNodes.Add(xml.CreateNode(Hello! I am yaya!,ntText));
注意CreateNode方法的第二个参数,我们继续看属性是怎么创建的:
node.AttributeNodes.Add(xml.CreateNode(length,ntAttribute));
node.SetAttribute(length,16);
node.AttributeNodes.Add(xml.CreateNode(color,ntAttribute));
node.SetAttribute(color,$0034494B);
最后别忘了保存哦:
xml.SaveToFile(F:\Work\费亚的文件\task\XML\lab_xml\test.xml);
xml.Active:=false;
到此我们就结束了创建,至于添加,即插入节点,要插在指定节点后将上面的add(const Node: IXMLNode)方法换成Insert(Index: Integer; const Node: IXMLNode),其它用法也就一目了然,不再详述了。
(2)读取和修改
读取比较简单,主要是读取子节点的文本和属性值,方法是比较简单,关键就是要利用IXMLNodeList接口来提供的一些属性和方法来循环搜索到指定节点就OK了。文本和属性值的读取方法在delphi中提供的方法有很多,我就讲一种:NodeValue属性,它是IXMLNode接口的一个属性,它的值是OleVariant类型,意味着我们在XML文件里虽然都是存的字符串,但delphi会帮我们来转换数据格式,比如有个属性节点叫node:
Node.NodeValue:=16;//16是integer类型
虽然在XML文件中保存的是ASCII格式的16,但当我们要读取的时候delphi还会帮我们换回来的,只要这样就可以了:
Var len:integer;
Len:=node.NodeValue;
当然我们要注意的就是,用这种方法读取的时候最好先查看同一节点的NodeType属性,因为有几种类型的节点避免发生异常,对照如下:
NodeType | NodeValue |
ntAttribute 属性节点 | 属性的值 |
ntElement元素节点 | 如果这个节点没有子节点,就返回它的TEXT,否则有异常 |
ntText文本节点 | TEXT的内容 |
上面讲的都是读和写节点的值,有时候也要读和写节点名,就要访问NodeName属性,使用方法大概相同,也要结合NodeValue来使用:
NodeType | NodeName |
ntAttribute 属性节点 | 属性的名字 |
ntElement元素节点 | 节点的名字 |
ntText文本节点 | ‘#text’ |
读取就完了,当然我们上面是通过接口的属性来做的,接口也有方法来完成,就不说了,对上面的几个属性都是可读可写的,所以修改也基本清楚了。
(3)删除
删除主要给出了删除指定节点,主要是看IXMLNodeList接口的几个方法,Clear和Delete方法,其中前一个是全部清空,后一个是删除指定的子节点,这个方法是重载的,可以按名字也可以按顺序号,即Count属性,非常方便!
二、控件解析法:
为控件的FileName属性选择一个XML样板文件,然后由击控件选择XML Data Binding Wizard…,在这个向导中间会创建一个xdb文件。在弹出的向导中, 第一页中, 可以看到Delphi已经帮你把XML文件中的各个节点对应到了接口,这里你可以展开每个节点,编辑每个节点的属性数据类型。单击Next到下一个配置页面,这里你可以看到Delphi生成了各个节点接口的框架代码。 单击 Finsh 完成向导, 这样Delphi将生成一个xdb 文件和与该XML文档结构对应的XML接口单元。再以后访问该类XML文件时,只需要参照生成的XML接口单元里的方法和属性就能很方便的读取节点:
var xml :IXMLXMLPackageType; // 通过向导生成的根接口
begin
xml := LoadXMLPacage ( F:\Work\费亚的文件\task\XML\lab_xml\test.xml ); // 这个方法也是生成的接口单元中的。
xml.Data.Row[1].name; // 比如我要取得data下的第2个row 中的name属性。
很方便的,完全可以只要一个这样的接口单元就可以了,其它的什么都可以不要。接口单元中除了LoadXMLPacage方法还有NewXMLPacage方法和GetXMLPacage方法,这三个方法是可以用于获得刚开始的XML实例对象的,同时这个单元中所有新的接口也是继承IXMLNode接口的,所以你不必担心方法不够用。当然只能访问类似结构的XML实例,其它格式的要再重新创建一个对应的XML接口单元才可以。
时间:2004-9-3
作者:费亚