<html xmlns:v="urn:schemas-microsoft-com:vml"xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 12"><meta name=Originator content="Microsoft Word 12"><link rel=File-List href="sqlite_port-Dateien/filelist.xml"><link rel=Edit-Time-Data href="sqlite_port-Dateien/editdata.mso"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}o\:* {behavior:url(#default#VML);}w\:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}</style><![endif]--><!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>SieMatic</o:Author> <o:LastAuthor>SieMatic</o:LastAuthor> <o:Revision>2</o:Revision> <o:Created>2008-02-26T10:24:00Z</o:Created> <o:LastSaved>2008-02-26T10:24:00Z</o:LastSaved> <o:Pages>7</o:Pages> <o:Words>2063</o:Words> <o:Characters>13003</o:Characters> <o:Company>SieMatic Möbelwerke GmbH</o:Company> <o:Lines>108</o:Lines> <o:Paragraphs>30</o:Paragraphs> <o:CharactersWithSpaces>15036</o:CharactersWithSpaces> <o:Version>12.00</o:Version> </o:DocumentProperties></xml><![endif]--><link rel=themeData href="sqlite_port-Dateien/themedata.thmx"><link rel=colorSchemeMapping href="sqlite_port-Dateien/colorschememapping.xml"><!--[if gte mso 9]><xml> <w:WordDocument> <w:GrammarState>Clean</w:GrammarState> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>DE</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:DontUseIndentAsNumberingTabStop/> <w:FELineBreak11/> <w:WW11IndentRules/> <w:DontAutofitConstrainedTables/> <w:AutofitLikeWW11/> <w:HangulWidthLikeWW11/> <w:UseNormalStyleForList/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles></xml><![endif]--><style><!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;}@font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;}@font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;}@font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627400839 -2147483648 8 0 66047 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New Roman"; mso-fareast-language:EN-US;}p.MsoCommentText, li.MsoCommentText, div.MsoCommentText {mso-style-noshow:yes; mso-style-priority:99; mso-style-link:"Kommentartext Zchn"; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New Roman"; mso-fareast-language:EN-US;}span.MsoCommentReference {mso-style-noshow:yes; mso-style-priority:99; mso-ansi-font-size:8.0pt; mso-bidi-font-size:8.0pt;}a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline; text-underline:single;}a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; text-decoration:underline; text-underline:single;}p {mso-style-noshow:yes; mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman";}code {mso-style-noshow:yes; mso-style-priority:99; font-family:"Courier New"; mso-ascii-font-family:"Courier New"; mso-fareast-font-family:"Times New Roman"; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New";}pre {mso-style-priority:99; mso-style-link:"HTML Vorformatiert Zchn"; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; font-size:12.0pt; font-family:"Courier New"; mso-fareast-font-family:"Times New Roman"; color:black;}p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject {mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:Kommentartext; mso-style-link:"Kommentarthema Zchn"; mso-style-next:Kommentartext; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New Roman"; mso-fareast-language:EN-US; font-weight:bold;}p.MsoAcetate, li.MsoAcetate, div.MsoAcetate {mso-style-noshow:yes; mso-style-priority:99; mso-style-link:"Sprechblasentext Zchn"; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:8.0pt; font-family:"Tahoma","sans-serif"; mso-fareast-font-family:Calibri; mso-fareast-language:EN-US;}p.codeblock, li.codeblock, div.codeblock {mso-style-name:codeblock; mso-style-unhide:no; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman";}span.HTMLVorformatiertZchn {mso-style-name:"HTML Vorformatiert Zchn"; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"HTML Vorformatiert"; mso-ansi-font-size:12.0pt; mso-bidi-font-size:12.0pt; font-family:"Courier New"; mso-ascii-font-family:"Courier New"; mso-fareast-font-family:"Times New Roman"; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New"; color:black;}span.KommentartextZchn {mso-style-name:"Kommentartext Zchn"; mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:Kommentartext; mso-ansi-language:DE;}span.KommentarthemaZchn {mso-style-name:"Kommentarthema Zchn"; mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-parent:"Kommentartext Zchn"; mso-style-link:Kommentarthema; mso-ansi-language:DE; font-weight:bold;}span.SprechblasentextZchn {mso-style-name:"Sprechblasentext Zchn"; mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:Sprechblasentext; mso-ansi-font-size:8.0pt; mso-bidi-font-size:8.0pt; font-family:"Tahoma","sans-serif"; mso-ascii-font-family:Tahoma; mso-hansi-font-family:Tahoma; mso-bidi-font-family:Tahoma; mso-ansi-language:DE;}span.GramE {mso-style-name:""; mso-gram-e:yes;}.MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-fareast-font-family:Calibri; mso-hansi-font-family:Calibri;}@page Section1 {size:595.3pt 841.9pt; margin:70.85pt 70.85pt 2.0cm 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;}div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:711465342; mso-list-type:hybrid; mso-list-template-ids:-398029370 -1506878708 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}@list l0:level1 {mso-level-start-at:0; mso-level-number-format:bullet; mso-level-text:\F0D8; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-18.0pt; font-family:Wingdings; mso-fareast-font-family:"Times New Roman"; mso-bidi-font-family:"Courier New";}@list l1 {mso-list-id:1152210869; mso-list-type:hybrid; mso-list-template-ids:1896245118 489165068 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}@list l1:level1 {mso-level-start-at:0; mso-level-number-format:bullet; mso-level-text:\F0D8; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-18.0pt; font-family:Wingdings; mso-fareast-font-family:"Times New Roman"; mso-bidi-font-family:"Courier New";}@list l2 {mso-list-id:2131390884; mso-list-type:hybrid; mso-list-template-ids:-835441590 1095827004 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}@list l2:level1 {mso-level-start-at:0; mso-level-number-format:bullet; mso-level-text:\F0D8; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:21.4pt; text-indent:-18.0pt; font-family:Wingdings; mso-fareast-font-family:"Times New Roman"; mso-bidi-font-family:"Courier New";}ol {margin-bottom:0cm;}ul {margin-bottom:0cm;}--></style><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normale Tabelle"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif";}</style><![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="2050"/></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> <o:rules v:ext="edit"> <o:r id="V:Rule4" type="connector" idref="#_x0000_s1033"/> <o:r id="V:Rule6" type="connector" idref="#_x0000_s1036"/> </o:rules> </o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple style='tab-interval:35.4pt'><div class=Section1><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>SQLite implementation for Symbian OS with an ADO.NETProvider for Red Five Labs’ .NET Compact Framework 1.0<o:p></o:p></span></b></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Converting SQLite to S60<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Red Five Labs’Net60, a .NET Compact Framework Version 1.0, introduces .NET programming to thegreat family of Symbian S60 smartphones. Now it is possible to run a managed .NETapplication, written for Windows Mobile, on S60 smartphones. Unfortunately,however, the .NET Compact Framework 1.0 does not provide any form of databasesupport. This is first supported in the .NET Compact Framework 2.0 togetherwith the SQL Server Compact Edition. This SQL Server only runs on WindowsMobile <span class=GramE>devices which means</span> another database system isneeded to provide database functionality to Symbian devices. Enter SQLite forS60.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>SQLite is apopular open source, stand-alone database system that was written in C and isavailable for Windows, Windows Mobile, OS2 and <span class=GramE>Unix</span> operatingsystems. It is ACID compliant and supports the SQL-92 standard. The Symbian OS atpresent does not provide a database system, however in the future Symbian OSVersion 9.4 will support a SQLite implementation. <o:p></o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>PIPS for S60 made porting SQLite to Symbian OSpossible<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>At thebeginning of 2007 Symbian published the P.I.P.S. SDK (<ahref="http://developer.symbian.com/wiki/display/oe/P.I.P.S.+Home">http://developer.symbian.com/wiki/display/oe/P.I.P.S.+Home</a>) for the S60 and UIQ platforms. P.I.P.S. is the implementation of the POSIXInterface for Symbian OS that provides C Libraries like STDIO or STDLIB. Withthe Open C SDK it is possible to port the SQLite library written in ANSI C toSymbian OS. To do such a conversion of an existing ANSI C project knowledge ofprogramming for Symbian OS is needed. A good description of the conversion ofSQLite to S60 is the article on Dr.Dobbs (<ahref="http://www.ddj.com/mobile/198702204?pgno=2">http://www.ddj.com/mobile/198702204?pgno=2</a>)and describes how such a port of SQLite could be done. By following theseinstructions, it was easy to create a project that could compile the C files ofthe SQLite project. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Note, thePIPS SDK for S60 must be installed to the PC to compile the SqliteS60 projectwhilst the PIPS_s60_1_2_SS .SIS must be installed on the device.<o:p></o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Converting SQLite .C files to .CPP files<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Before theSQLite source could be completely compiled, the file IO operations had to berewritten. This part of SQLite is not platform independent and uses the nativeOS operations to open, read and write files.<span style='mso-spacerun:yes'> </span>The first step was to rewrite the file operations with the STDIOimplementation.<span style='mso-spacerun:yes'> </span>For example the <bstyle='mso-bidi-font-weight:normal'>OpenDatabase</b> method was modified to usethe <b style='mso-bidi-font-weight:normal'>fopen</b> method of POSIX. Unfortunatelythis did not result in the outcome that was expected. <spanstyle='mso-spacerun:yes'> </span>On the test device this implementation doesnot run. After analyzing this, it seems to be that the ANSI C file IO methodscause the error. <span style='mso-spacerun:yes'> </span>The Symbian API is anobject oriented programming interface, therefore to use the native file IO <spanclass=GramE>classes,</span> the SQLite source must be converted from .C filesto .CPP files. Renaming the files was easy, but after renaming the source filesover 500 compiler errors were output. Most of these were language differencesbetween C and C++ and could be solved quickly. After resolving these problems,programming the OS routines with the Symbian file IO classes could begin.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>For thispart a new file was created and added to the SQLiteS60 project(os_symbian.cpp). This file includes all methods that SQLite expects for fileIO. The conversion of the existing C files of the SQLite project to CPP filesmakes the SQLiteS60 project very different from the main source. As a result ofthis, the implementations for the other OS operations, i.e. for OS2, Windows andMac, were deleted from this project. SQLite uses a structure to reference thecorrect OS operations and is implemented in every OS implementation. Due to thispractice, only a compiler switch is needed to generate a run-able SQLite libraryfor the specific operating system. As this structure is not used in the S60conversion project, it has also been removed from the code and the Symbian IOmethods are directly connected to the OS methods in the file os.cpp.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>A simpleexample to open or create a file with native Symbian methods is shown in thefollowing code snippet.<o:p></o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>RFs fileSession;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>RFile file;<span style='mso-spacerun:yes'> </span><o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>fileSession.Connect(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>TInt err=<spanclass=GramE>file.Open(</span>fsSession,fileName,shareMode);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>if</span></span><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> (err==KErrNotFound) // file does not exist - create it<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>{<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>err=</span>file.Create(fsSession,fileName,shareMode);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>// do read and write operations<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>file.Close(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>fileSession.Close(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>);<o:p></o:p></span></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The RFsclass defines the file server session. Any file operation in controlled by aninstance of this class. After this instance is created, the file can be openedover the RFile class. The RFile class contains all file IO operations. By usingthese two classes to extend the <b style='mso-bidi-font-weight:normal'>sqlite3_file</b>structure, the SQLite file IO operations can use the class instances of RFs andRFile as shown in the struct below.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span class=GramE><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>struct</span></span><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> symbianFile {<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>int</span> isOpen;<o:p></o:p></span></pre><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>unsigned</span> char locktype; /* Type of lock currently held on this file */<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>short</span> sharedLockByte;<span style='mso-spacerun:yes'> </span>/* Randomly chosen byte used as a shared lock */<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>char</span> fileName[512];<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>RFs session;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>RFile file;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>};<o:p></o:p></span></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Finally allthe methods that SQLite needs to handle file operations must be rewritten byusing this structure and the RFile methods. The following example shows how toclose an open file and the file server session.<o:p></o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span class=GramE><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>int</span></span><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> Close(sqlite3_file *id){<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>int</span> rc, cnt = 0;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>symbianFile</span> *pFile = (symbianFile*)id;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>pFile</span>->file.Close();<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>pFile</span>->session.Close();<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>return</span> SQLITE_OK;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The other fileIO operations are similar to the <b style='mso-bidi-font-weight:normal'>close</b>method. The <b style='mso-bidi-font-weight:normal'>open</b> method of RFile expectsa Unicode string that contains the name of the database file. A conversion ofthe ASCII format to Unicode must be done before calling the <bstyle='mso-bidi-font-weight:normal'>open</b> method. For such a conversion the <bstyle='mso-bidi-font-weight:normal'>CCnvCharacterSetConverter</b> class can beused. This class needs the file server session handle and the string to convertto Unicode. The following example shows the converter method used in SQLite.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span class=GramE><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>void</span></span><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> ConvertToUnicode(RFs session, TDes16& aUnicode, const char *str)<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>{<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::<spanclass=GramE>NewL(</span>);<o:p></o:p></span></pre><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>converter</span>->PrepareToConvertToOrFromL(KCharacterSetIdentifierUtf8, session);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>TPtrC8 <spanclass=GramE>ptr(</span>(const unsigned char*)str);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>int</span> state = CCnvCharacterSetConverter::KStateDefault;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>converter</span>->ConvertToUnicode(aUnicode, ptr, state);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Afterrewriting all operations used by SQLite to use the RFile class, in the os_symbian.cpp<span class=GramE>file ,</span> the project can be compiled by the Symbian Ccompiler (which has been included in the build chain by installing the Carbideplug in for Visual Studio) and a Symbian Library is created that can be used ona S60 device as a database. This library takes the form of a native Symbian DLLcalled sqlite.dll.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Thedatabase file that the sqlite.dll generates can be used by any otherimplementation of SQLite. So it will be possible to transfer all stored datafrom a smart device to a database server in a company network.<o:p></o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Compiling sqlite.dll from the SQLiteS60 project<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>It ispossible to compile the sqlite.dll using Visual Studio with the Carbide plugin.<o:p></o:p></span></p><p class=MsoNormal><span class=GramE><span lang=EN-US style='mso-ansi-language:EN-US'>Another<span style='mso-spacerun:yes'> </span>easier</span></span><spanlang=EN-US style='mso-ansi-language:EN-US'> possibility is to type thefollowing command lines in the ‘group’ directory of the SqliteS60 folder.<spanstyle='mso-spacerun:yes'> </span><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>To compilefor the S60 device (GCCE compiler) and as a release version:<bstyle='mso-bidi-font-weight:normal'><o:p></o:p></b></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:0cm;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>> Bldmake bldfiles [enter]<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><bstyle='mso-bidi-font-weight:normal'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></b></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><bstyle='mso-bidi-font-weight:normal'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>> <span class=GramE>abld</span> build gcce urel<o:p></o:p></span></b></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>For theemulator with debug information:<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:0cm;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>> Bldmake bldfiles [enter]<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>> <spanclass=GramE>abld</span> build winscw udeb [enter]<o:p></o:p></span></pre></div><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Note:</span></b><span lang=EN-USstyle='mso-ansi-language:EN-US'> <span style='mso-spacerun:yes'> </span>Nospaces must be present in the directory path where the SQliteS60 project islocated. Also, the command line console must be run with “Admin” privileges.<o:p></o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'><br>Writing an ADO.NET Provider using Net60 Compact Framework 1.0<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>After thesuccessful conversion of the SQLite code to the S60 platform, the developmentof an ADO.NET provider for Net60 that uses the SQLite library for Symbian OS canbe started. As there are some existing implementations of an ADO.NET providerfor the .NET Framework, this development did not have to start at the grassroots level. Mono, for example, contains such an implementation <spanclass=GramE>( </span><a href="http://www.mono-project.com">www.mono-project.com</a>). This could be used as a base for the ADO.NET provider for Net60.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The .NET CompactFramework 1.0 only provides the basic interfaces like IDbConnection,IDbCommand, <span class=GramE>IDbParameter</span> and so on. Otherfunctionality such as the base classes in the System.Data.Common namespace <spanclass=GramE>are</span> not provided. Also the DbDataAdapter base class is not implemented.So this implementation cannot support DataAdapters, however with these basicinterfaces it is possible to develop an ADO.NET Provider that supports allbasic features of the .NET Framework 1.1 for the desktop.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>TheSQLiteS60 project results in a native Symbian DLL, sqlite.dll, which must beused from within managed .NET code. Net60, and the .NET Compact Framework,supports interoperability between managed and unmanaged code through amechanism called P/Invoke.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The diagrambelow shows the interaction between the various components of the solution:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"> <v:stroke joinstyle="miter"/> <v:path gradientshapeok="t" o:connecttype="rect"/></v:shapetype><v:shape id="_x0000_s1027" type="#_x0000_t202" style='position:absolute; margin-left:62.95pt;margin-top:62.25pt;width:285.5pt;height:107.65pt; z-index:1;mso-width-relative:margin;mso-height-relative:margin'> <v:textbox style='mso-next-textbox:#_x0000_s1027'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:11.0pt;line-height:115%; mso-ansi-language:EN-US'>Net60<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1030" type="#_x0000_t202" style='position:absolute; margin-left:215.8pt;margin-top:126.3pt;width:132.85pt;height:43.75pt; z-index:2;mso-width-relative:margin;mso-height-relative:margin'> <v:textbox style='mso-next-textbox:#_x0000_s1030'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='mso-ansi-language:EN-US'>SQLiteS60.dll<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1026" type="#_x0000_t202" style='position:absolute; margin-left:62.95pt;margin-top:173.55pt;width:287.05pt;height:33.45pt; z-index:3;mso-height-percent:200;mso-height-percent:200;mso-width-relative:margin; mso-height-relative:margin'> <v:textbox style='mso-fit-shape-to-text:t'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'>Symbian OS</p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1028" type="#_x0000_t202" style='position:absolute; margin-left:62.95pt;margin-top:24.15pt;width:285.7pt;height:33.45pt;z-index:4; mso-height-percent:200;mso-height-percent:200;mso-width-relative:margin; mso-height-relative:margin'> <v:textbox style='mso-next-textbox:#_x0000_s1028;mso-fit-shape-to-text:t'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='mso-ansi-language:EN-US'>.NET CF 1.0 App using SQLite<o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1029" type="#_x0000_t202" style='position:absolute; margin-left:278.25pt;margin-top:149.15pt;width:70.2pt;height:20.9pt;z-index:5; mso-width-relative:margin;mso-height-relative:margin'> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='mso-ansi-language:EN-US'>PIPS <o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1031" type="#_x0000_t202" style='position:absolute; margin-left:246.9pt;margin-top:62.25pt;width:101.75pt;height:38.55pt; z-index:6;mso-width-relative:margin;mso-height-relative:margin'> <v:textbox style='mso-next-textbox:#_x0000_s1031'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size: 11.0pt;line-height:115%;mso-ansi-language:EN-US'>System.Data.SQLiteClient.dll</span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;line-height:115%'><o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1034" type="#_x0000_t202" style='position:absolute; margin-left:355.45pt;margin-top:67.25pt;width:118.1pt;height:33.55pt; z-index:7;mso-width-relative:margin;mso-height-relative:margin' filled="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1034'> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='font-size:9.0pt;mso-bidi-font-size:11.0pt;line-height:115%; mso-ansi-language:EN-US'>P/Invoke from managed code to native Symbian DLL</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shape id="_x0000_s1037" type="#_x0000_t202" style='position:absolute; margin-left:308.15pt;margin-top:98.15pt;width:39.7pt;height:15.65pt;z-index:8' strokecolor="white"> <v:textbox> <![if !mso]> <table cellpadding=0 cellspacing=0 width="100%"> <tr> <td><![endif]> <div> <p class=MsoNormal><o:p> </o:p></p> </div> <![if !mso]></td> </tr> </table> <![endif]></v:textbox></v:shape><v:shapetype id="_x0000_t32" coordsize="21600,21600" o:spt="32" o:oned="t" path="m,l21600,21600e" filled="f"> <v:path arrowok="t" fillok="f" o:connecttype="none"/> <o:lock v:ext="edit" shapetype="t"/></v:shapetype><v:shape id="_x0000_s1036" type="#_x0000_t32" style='position:absolute; margin-left:307.2pt;margin-top:100.9pt;width:0;height:25.35pt;z-index:9' o:connectortype="straight"/><v:shape id="_x0000_s1033" type="#_x0000_t32" style='position:absolute;margin-left:335.7pt;margin-top:90.2pt;width:25.95pt; height:23.6pt;flip:x;z-index:10' o:connectortype="straight"> <v:stroke dashstyle="1 1" endarrow="block" endcap="round"/></v:shape><![endif]--><![if !vml]><span style='mso-ignore:vglayout'><table cellpadding=0 cellspacing=0 align=left> <tr> <td width=83 height=31></td> </tr> <tr> <td></td> <td><img width=552 height=250 src="sqlite_port-Dateien/image001.gif" v:shapes="_x0000_s1027 _x0000_s1030 _x0000_s1026 _x0000_s1028 _x0000_s1029 _x0000_s1031 _x0000_s1034 _x0000_s1037 _x0000_s1036 _x0000_s1033"></td> </tr></table></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><br style='mso-ignore:vglayout' clear=ALL><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The native SQLitemethods, such as <b style='mso-bidi-font-weight:normal'>libversion</b>, <bstyle='mso-bidi-font-weight:normal'>open</b> etc., are called using theP/Invoke mechanism in the .NET code. To do this, the entry point of the correspondingmethod in the SQLite library must be known. Symbian has a specific entry pointmodel. All methods are exported from a library by ordinal numbers instead ofmethod names. The relation of method name and export number can be found in thegenerated .DEF file of the SQLite.dll or by using a dump tool.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Thefollowing example shows how a native SQLite method is defined in .NET. The <bstyle='mso-bidi-font-weight:normal'>DLLImort</b> attribute defines the libraryname and the entry points were the method is located in the library. The CallingConventiondefines the type of data exchange between the unmanaged SQLite and the managed.NET code. <o:p></o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>[<span class=GramE>DllImport(</span>"sqlite.dll", EntryPoint = "#86", CallingConvention = _Convention)]<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>public</span></span><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> static extern SQLiteCode sqlite3_open(IntPtr filename, out IntPtr db);<o:p></o:p></span></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Based onthe existing implementations of SQLite for .NET it was easy to develop anADO.NET Provider that runs on the Compact Framework. To test the behavior of a.NET application, this implementation provides a P/Invoke call for each <bstyle='mso-bidi-font-weight:normal'>sqlite3_</b> method call to the Symbianversion contained in the sqlite.dll. <span class=GramE>These</span> P/Invokesare performed in the SymbianMethods.cs file in the managed System.Data.SQLiteClient.dllextension class.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Interestingly,all applications are also executable on the smartphone device emulator. Tochange between the emulator and device, only the emulator flag in theconnection string must be set to true or false. For the emulator the Windowsversion of SQLite is required <span class=GramE>( </span><ahref="http://www.sqlite.org">www.sqlite.org</a> ), the emulator flag links theP/Invoke call to that library.<o:p></o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Deploying SQLiteS60 to the device<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>In order todeploy the SQLite database to device, the sqlite.dll must be deployed to the \sys\bindirectory and the System.Data.SQLiteClient.dll to the Red Five Labs GACrepository on the device which is \Resource\RedFiveLabs\Gac. The sqlite.pkg isused together with the Symbian makesis.exe to create an installable SQLite.SISfile which deploys these two libraries to their respective destinations. If thesqlite.dll and System.Data.SQLiteClient.dll are placed in the same directory asthe sqlite.pcg file, an example command line to generate the Sqlite.sis is <o:p></o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>C:\temp\sis>makesis sqlite.pkg<o:p></o:p></span></pre></div><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Using SQLite<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Theimplementation for Compact Framework 1.0 contains the SQLiteConnection classthat handles the connection to the sqlite database and creates newSQLiteCommand instances. With these instances database queries can be sent toand the results received from the database. As a result a SQLiteDataReader set instancecan be returned. This class provides the functionality to step through the rowsof the result sets. Transactional processing can be performed by using theSQLiteTransaction class. An instance for that class can be created over theSQLiteConnection instance. Any SQLiteCommand can contain one or more SQL statements.These statements are handled in the SQLiteStatement class. Each statement isrepresented by an instance of that class. This class calls the native SQLitemethods to perform the database operations.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Thefollowing example shows how to open a database by using the SQLiteConnectionclass.<o:p></o:p></span></p><div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>SQLiteConnection _Connection = new <spanclass=GramE>SQLiteConnection(</span>"Data Source=test1.db;NewDatabase=True;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><spanstyle='mso-tab-count:5'> </span>Synchronous=Off<spanclass=GramE>;Encoding</span>=UTF8;Emulator=true");<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>_<spanclass=GramE>Connection.Open(</span>);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>SQLiteCommand cmd = _<spanclass=GramE>Connection.CreateCommand(</span>);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>cmd.CommandText = "select id, orderid, article from orderdetails where OrderId = @OrderId";<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>cmd.Parameters.Add(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"@OrderId", DbType.Int32).Value = orderId;<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>DataTable table = new <spanclass=GramE>DataTable(</span>);<o:p></o:p></span></pre><pre style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>table.Columns.Add(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"Id");<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>table.Columns.Add(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"OrderId");<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>table.Columns.Add(</span></span><span lang=EN-USstyle='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"Article");<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>SQLiteDataReader reader = <spanclass=GramE>cmd.ExecuteReader(</span>);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanclass=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>while</span></span><span lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> (reader.Read())<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>{<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>DataRow row = <spanclass=GramE>table.NewRow(</span>);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>row[</span>"Id"] = reader.GetInt32(0);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>row[</span>"OrderId"] = reader.GetInt32(1);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>row[</span>"Article"] = reader.GetString(2);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><spanclass=GramE>table.Rows.Add(</span>row);<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><prestyle='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><spanlang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>dataGridView.DataSource = table;<o:p></o:p></span></pre></div><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>TheSQLiteCommand instance contains a select statement that loads the orders withthe specified OrderId. The result set of this query is then filled in a datatable that is databinded to <span class=GramE>an</span> dataGridView thatdisplays the result. An example application is provided in the form ofSqlMobileTest project.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Conclusion<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>With thisconversion of SQLite, it is now possible to create .NET applications with databasesupport for the great family of Symbian S60 smartphones. With the upcoming releaseof version 9.4 the Symbian OS provides an implementation of SQLite but thisversion is not released yet and only new devices will get this databasesupport. With this conversion all S60 3<sup>rd</sup> Edition devices will be ableto use SQLite. Together with the Red Five Labs Net60 implementation of the .NETCompact Framework it is possible to run .NET applications on Symbian OS. Togetherwith the ADO.NET provider for this SQLite implementation these applications canuse database functionality like any other application on a personal computer.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-USstyle='mso-ansi-language:EN-US'>Tools Used for this project<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>MicrosoftVisual Studio 2005 together with the Carbide.vs Plugin (http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide/<spanclass=GramE>index.html )</span> were used in this project.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><spanstyle='mso-spacerun:yes'> </span>Additionally the S60 SDK and the Symbian PIPSSDK are required to compile the project. With the Carbide plug in it ispossible to develop native Symbian applications in the Visual Studio IDE and todebug on the S60 emulator. To convert a S60 project (f.e. a BLD or MMP file) toa Visual Studio project, the Import Wizard of the carbide plugin could be used.It is located under the File menu. The user only has to select the s60 projectand to assign an S60 SDK (f.e. maintenance release or FP1/FP2). The rest of thetransformation does the wizard. So it is easy to convert existing projects touse the carbide plugin.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p></div></body></html>