2
+ − 1
<html xmlns:v="urn:schemas-microsoft-com:vml"
+ − 2
xmlns:o="urn:schemas-microsoft-com:office:office"
+ − 3
xmlns:w="urn:schemas-microsoft-com:office:word"
+ − 4
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+ − 5
xmlns="http://www.w3.org/TR/REC-html40">
+ − 6
+ − 7
<head>
+ − 8
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+ − 9
<meta name=ProgId content=Word.Document>
+ − 10
<meta name=Generator content="Microsoft Word 12">
+ − 11
<meta name=Originator content="Microsoft Word 12">
+ − 12
<link rel=File-List href="sqlite_port-Dateien/filelist.xml">
+ − 13
<link rel=Edit-Time-Data href="sqlite_port-Dateien/editdata.mso">
+ − 14
<!--[if !mso]>
+ − 15
<style>
+ − 16
v\:* {behavior:url(#default#VML);}
+ − 17
o\:* {behavior:url(#default#VML);}
+ − 18
w\:* {behavior:url(#default#VML);}
+ − 19
.shape {behavior:url(#default#VML);}
+ − 20
</style>
+ − 21
<![endif]--><!--[if gte mso 9]><xml>
+ − 22
<o:DocumentProperties>
+ − 23
<o:Author>SieMatic</o:Author>
+ − 24
<o:LastAuthor>SieMatic</o:LastAuthor>
+ − 25
<o:Revision>2</o:Revision>
+ − 26
<o:Created>2008-02-26T10:24:00Z</o:Created>
+ − 27
<o:LastSaved>2008-02-26T10:24:00Z</o:LastSaved>
+ − 28
<o:Pages>7</o:Pages>
+ − 29
<o:Words>2063</o:Words>
+ − 30
<o:Characters>13003</o:Characters>
+ − 31
<o:Company>SieMatic Möbelwerke GmbH</o:Company>
+ − 32
<o:Lines>108</o:Lines>
+ − 33
<o:Paragraphs>30</o:Paragraphs>
+ − 34
<o:CharactersWithSpaces>15036</o:CharactersWithSpaces>
+ − 35
<o:Version>12.00</o:Version>
+ − 36
</o:DocumentProperties>
+ − 37
</xml><![endif]-->
+ − 38
<link rel=themeData href="sqlite_port-Dateien/themedata.thmx">
+ − 39
<link rel=colorSchemeMapping href="sqlite_port-Dateien/colorschememapping.xml">
+ − 40
<!--[if gte mso 9]><xml>
+ − 41
<w:WordDocument>
+ − 42
<w:GrammarState>Clean</w:GrammarState>
+ − 43
<w:TrackMoves>false</w:TrackMoves>
+ − 44
<w:TrackFormatting/>
+ − 45
<w:HyphenationZone>21</w:HyphenationZone>
+ − 46
<w:PunctuationKerning/>
+ − 47
<w:ValidateAgainstSchemas/>
+ − 48
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ − 49
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ − 50
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ − 51
<w:DoNotPromoteQF/>
+ − 52
<w:LidThemeOther>DE</w:LidThemeOther>
+ − 53
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+ − 54
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+ − 55
<w:Compatibility>
+ − 56
<w:BreakWrappedTables/>
+ − 57
<w:SnapToGridInCell/>
+ − 58
<w:WrapTextWithPunct/>
+ − 59
<w:UseAsianBreakRules/>
+ − 60
<w:DontGrowAutofit/>
+ − 61
<w:DontUseIndentAsNumberingTabStop/>
+ − 62
<w:FELineBreak11/>
+ − 63
<w:WW11IndentRules/>
+ − 64
<w:DontAutofitConstrainedTables/>
+ − 65
<w:AutofitLikeWW11/>
+ − 66
<w:HangulWidthLikeWW11/>
+ − 67
<w:UseNormalStyleForList/>
+ − 68
</w:Compatibility>
+ − 69
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ − 70
<m:mathPr>
+ − 71
<m:mathFont m:val="Cambria Math"/>
+ − 72
<m:brkBin m:val="before"/>
+ − 73
<m:brkBinSub m:val="--"/>
+ − 74
<m:smallFrac m:val="off"/>
+ − 75
<m:dispDef/>
+ − 76
<m:lMargin m:val="0"/>
+ − 77
<m:rMargin m:val="0"/>
+ − 78
<m:defJc m:val="centerGroup"/>
+ − 79
<m:wrapIndent m:val="1440"/>
+ − 80
<m:intLim m:val="subSup"/>
+ − 81
<m:naryLim m:val="undOvr"/>
+ − 82
</m:mathPr></w:WordDocument>
+ − 83
</xml><![endif]--><!--[if gte mso 9]><xml>
+ − 84
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
+ − 85
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
+ − 86
LatentStyleCount="267">
+ − 87
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
+ − 88
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
+ − 89
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ − 90
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
+ − 91
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
+ − 92
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
+ − 93
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
+ − 94
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
+ − 95
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
+ − 96
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
+ − 97
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
+ − 98
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
+ − 99
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
+ − 100
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
+ − 101
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
+ − 102
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
+ − 103
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
+ − 104
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
+ − 105
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
+ − 106
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
+ − 107
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
+ − 108
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
+ − 109
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
+ − 110
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
+ − 111
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
+ − 112
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
+ − 113
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
+ − 114
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
+ − 115
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
+ − 116
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
+ − 117
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
+ − 118
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
+ − 119
UnhideWhenUsed="false" Name="Table Grid"/>
+ − 120
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
+ − 121
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
+ − 122
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
+ − 123
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 124
UnhideWhenUsed="false" Name="Light Shading"/>
+ − 125
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 126
UnhideWhenUsed="false" Name="Light List"/>
+ − 127
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 128
UnhideWhenUsed="false" Name="Light Grid"/>
+ − 129
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 130
UnhideWhenUsed="false" Name="Medium Shading 1"/>
+ − 131
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 132
UnhideWhenUsed="false" Name="Medium Shading 2"/>
+ − 133
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 134
UnhideWhenUsed="false" Name="Medium List 1"/>
+ − 135
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 136
UnhideWhenUsed="false" Name="Medium List 2"/>
+ − 137
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 138
UnhideWhenUsed="false" Name="Medium Grid 1"/>
+ − 139
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 140
UnhideWhenUsed="false" Name="Medium Grid 2"/>
+ − 141
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 142
UnhideWhenUsed="false" Name="Medium Grid 3"/>
+ − 143
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 144
UnhideWhenUsed="false" Name="Dark List"/>
+ − 145
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 146
UnhideWhenUsed="false" Name="Colorful Shading"/>
+ − 147
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 148
UnhideWhenUsed="false" Name="Colorful List"/>
+ − 149
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 150
UnhideWhenUsed="false" Name="Colorful Grid"/>
+ − 151
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 152
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
+ − 153
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 154
UnhideWhenUsed="false" Name="Light List Accent 1"/>
+ − 155
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 156
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
+ − 157
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 158
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
+ − 159
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 160
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
+ − 161
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 162
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
+ − 163
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
+ − 164
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
+ − 165
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
+ − 166
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
+ − 167
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
+ − 168
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
+ − 169
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
+ − 170
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 171
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
+ − 172
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 173
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
+ − 174
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 175
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
+ − 176
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 177
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
+ − 178
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 179
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
+ − 180
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 181
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
+ − 182
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 183
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
+ − 184
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 185
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
+ − 186
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 187
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
+ − 188
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 189
UnhideWhenUsed="false" Name="Light List Accent 2"/>
+ − 190
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 191
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
+ − 192
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 193
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
+ − 194
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 195
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
+ − 196
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 197
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
+ − 198
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 199
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
+ − 200
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 201
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
+ − 202
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 203
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
+ − 204
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 205
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
+ − 206
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 207
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
+ − 208
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 209
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
+ − 210
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 211
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
+ − 212
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 213
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
+ − 214
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 215
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
+ − 216
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 217
UnhideWhenUsed="false" Name="Light List Accent 3"/>
+ − 218
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 219
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
+ − 220
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 221
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
+ − 222
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 223
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
+ − 224
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 225
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
+ − 226
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 227
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
+ − 228
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 229
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
+ − 230
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 231
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
+ − 232
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 233
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
+ − 234
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 235
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
+ − 236
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 237
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
+ − 238
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 239
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
+ − 240
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 241
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
+ − 242
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 243
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
+ − 244
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 245
UnhideWhenUsed="false" Name="Light List Accent 4"/>
+ − 246
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 247
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
+ − 248
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 249
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
+ − 250
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 251
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
+ − 252
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 253
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
+ − 254
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 255
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
+ − 256
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 257
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
+ − 258
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 259
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
+ − 260
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 261
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
+ − 262
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 263
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
+ − 264
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 265
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
+ − 266
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 267
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
+ − 268
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 269
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
+ − 270
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 271
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
+ − 272
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 273
UnhideWhenUsed="false" Name="Light List Accent 5"/>
+ − 274
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 275
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
+ − 276
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 277
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
+ − 278
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 279
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
+ − 280
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 281
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
+ − 282
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 283
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
+ − 284
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 285
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
+ − 286
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 287
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
+ − 288
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 289
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
+ − 290
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 291
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
+ − 292
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 293
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
+ − 294
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 295
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
+ − 296
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 297
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
+ − 298
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ − 299
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
+ − 300
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ − 301
UnhideWhenUsed="false" Name="Light List Accent 6"/>
+ − 302
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ − 303
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
+ − 304
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ − 305
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
+ − 306
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ − 307
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
+ − 308
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ − 309
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
+ − 310
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ − 311
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
+ − 312
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ − 313
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
+ − 314
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ − 315
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
+ − 316
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ − 317
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
+ − 318
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ − 319
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
+ − 320
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ − 321
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
+ − 322
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ − 323
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
+ − 324
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ − 325
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
+ − 326
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
+ − 327
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
+ − 328
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
+ − 329
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
+ − 330
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
+ − 331
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
+ − 332
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
+ − 333
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
+ − 334
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
+ − 335
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
+ − 336
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
+ − 337
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
+ − 338
</w:LatentStyles>
+ − 339
</xml><![endif]-->
+ − 340
<style>
+ − 341
<!--
+ − 342
/* Font Definitions */
+ − 343
@font-face
+ − 344
{font-family:Wingdings;
+ − 345
panose-1:5 0 0 0 0 0 0 0 0 0;
+ − 346
mso-font-charset:2;
+ − 347
mso-generic-font-family:auto;
+ − 348
mso-font-pitch:variable;
+ − 349
mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ − 350
@font-face
+ − 351
{font-family:"Cambria Math";
+ − 352
panose-1:2 4 5 3 5 4 6 3 2 4;
+ − 353
mso-font-charset:0;
+ − 354
mso-generic-font-family:roman;
+ − 355
mso-font-pitch:variable;
+ − 356
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
+ − 357
@font-face
+ − 358
{font-family:Calibri;
+ − 359
panose-1:2 15 5 2 2 2 4 3 2 4;
+ − 360
mso-font-charset:0;
+ − 361
mso-generic-font-family:swiss;
+ − 362
mso-font-pitch:variable;
+ − 363
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
+ − 364
@font-face
+ − 365
{font-family:Tahoma;
+ − 366
panose-1:2 11 6 4 3 5 4 4 2 4;
+ − 367
mso-font-charset:0;
+ − 368
mso-generic-font-family:swiss;
+ − 369
mso-font-pitch:variable;
+ − 370
mso-font-signature:1627400839 -2147483648 8 0 66047 0;}
+ − 371
/* Style Definitions */
+ − 372
p.MsoNormal, li.MsoNormal, div.MsoNormal
+ − 373
{mso-style-unhide:no;
+ − 374
mso-style-qformat:yes;
+ − 375
mso-style-parent:"";
+ − 376
margin-top:0cm;
+ − 377
margin-right:0cm;
+ − 378
margin-bottom:10.0pt;
+ − 379
margin-left:0cm;
+ − 380
line-height:115%;
+ − 381
mso-pagination:widow-orphan;
+ − 382
font-size:11.0pt;
+ − 383
font-family:"Calibri","sans-serif";
+ − 384
mso-fareast-font-family:Calibri;
+ − 385
mso-bidi-font-family:"Times New Roman";
+ − 386
mso-fareast-language:EN-US;}
+ − 387
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
+ − 388
{mso-style-noshow:yes;
+ − 389
mso-style-priority:99;
+ − 390
mso-style-link:"Kommentartext Zchn";
+ − 391
margin-top:0cm;
+ − 392
margin-right:0cm;
+ − 393
margin-bottom:10.0pt;
+ − 394
margin-left:0cm;
+ − 395
line-height:115%;
+ − 396
mso-pagination:widow-orphan;
+ − 397
font-size:10.0pt;
+ − 398
font-family:"Calibri","sans-serif";
+ − 399
mso-fareast-font-family:Calibri;
+ − 400
mso-bidi-font-family:"Times New Roman";
+ − 401
mso-fareast-language:EN-US;}
+ − 402
span.MsoCommentReference
+ − 403
{mso-style-noshow:yes;
+ − 404
mso-style-priority:99;
+ − 405
mso-ansi-font-size:8.0pt;
+ − 406
mso-bidi-font-size:8.0pt;}
+ − 407
a:link, span.MsoHyperlink
+ − 408
{mso-style-priority:99;
+ − 409
color:blue;
+ − 410
text-decoration:underline;
+ − 411
text-underline:single;}
+ − 412
a:visited, span.MsoHyperlinkFollowed
+ − 413
{mso-style-noshow:yes;
+ − 414
mso-style-priority:99;
+ − 415
color:purple;
+ − 416
text-decoration:underline;
+ − 417
text-underline:single;}
+ − 418
p
+ − 419
{mso-style-noshow:yes;
+ − 420
mso-style-priority:99;
+ − 421
mso-margin-top-alt:auto;
+ − 422
margin-right:0cm;
+ − 423
mso-margin-bottom-alt:auto;
+ − 424
margin-left:0cm;
+ − 425
mso-pagination:widow-orphan;
+ − 426
font-size:12.0pt;
+ − 427
font-family:"Times New Roman","serif";
+ − 428
mso-fareast-font-family:"Times New Roman";}
+ − 429
code
+ − 430
{mso-style-noshow:yes;
+ − 431
mso-style-priority:99;
+ − 432
font-family:"Courier New";
+ − 433
mso-ascii-font-family:"Courier New";
+ − 434
mso-fareast-font-family:"Times New Roman";
+ − 435
mso-hansi-font-family:"Courier New";
+ − 436
mso-bidi-font-family:"Courier New";}
+ − 437
pre
+ − 438
{mso-style-priority:99;
+ − 439
mso-style-link:"HTML Vorformatiert Zchn";
+ − 440
margin:0cm;
+ − 441
margin-bottom:.0001pt;
+ − 442
mso-pagination:widow-orphan;
+ − 443
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;
+ − 444
font-size:12.0pt;
+ − 445
font-family:"Courier New";
+ − 446
mso-fareast-font-family:"Times New Roman";
+ − 447
color:black;}
+ − 448
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
+ − 449
{mso-style-noshow:yes;
+ − 450
mso-style-priority:99;
+ − 451
mso-style-parent:Kommentartext;
+ − 452
mso-style-link:"Kommentarthema Zchn";
+ − 453
mso-style-next:Kommentartext;
+ − 454
margin-top:0cm;
+ − 455
margin-right:0cm;
+ − 456
margin-bottom:10.0pt;
+ − 457
margin-left:0cm;
+ − 458
line-height:115%;
+ − 459
mso-pagination:widow-orphan;
+ − 460
font-size:10.0pt;
+ − 461
font-family:"Calibri","sans-serif";
+ − 462
mso-fareast-font-family:Calibri;
+ − 463
mso-bidi-font-family:"Times New Roman";
+ − 464
mso-fareast-language:EN-US;
+ − 465
font-weight:bold;}
+ − 466
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
+ − 467
{mso-style-noshow:yes;
+ − 468
mso-style-priority:99;
+ − 469
mso-style-link:"Sprechblasentext Zchn";
+ − 470
margin:0cm;
+ − 471
margin-bottom:.0001pt;
+ − 472
mso-pagination:widow-orphan;
+ − 473
font-size:8.0pt;
+ − 474
font-family:"Tahoma","sans-serif";
+ − 475
mso-fareast-font-family:Calibri;
+ − 476
mso-fareast-language:EN-US;}
+ − 477
p.codeblock, li.codeblock, div.codeblock
+ − 478
{mso-style-name:codeblock;
+ − 479
mso-style-unhide:no;
+ − 480
mso-margin-top-alt:auto;
+ − 481
margin-right:0cm;
+ − 482
mso-margin-bottom-alt:auto;
+ − 483
margin-left:0cm;
+ − 484
mso-pagination:widow-orphan;
+ − 485
font-size:12.0pt;
+ − 486
font-family:"Times New Roman","serif";
+ − 487
mso-fareast-font-family:"Times New Roman";}
+ − 488
span.HTMLVorformatiertZchn
+ − 489
{mso-style-name:"HTML Vorformatiert Zchn";
+ − 490
mso-style-priority:99;
+ − 491
mso-style-unhide:no;
+ − 492
mso-style-locked:yes;
+ − 493
mso-style-link:"HTML Vorformatiert";
+ − 494
mso-ansi-font-size:12.0pt;
+ − 495
mso-bidi-font-size:12.0pt;
+ − 496
font-family:"Courier New";
+ − 497
mso-ascii-font-family:"Courier New";
+ − 498
mso-fareast-font-family:"Times New Roman";
+ − 499
mso-hansi-font-family:"Courier New";
+ − 500
mso-bidi-font-family:"Courier New";
+ − 501
color:black;}
+ − 502
span.KommentartextZchn
+ − 503
{mso-style-name:"Kommentartext Zchn";
+ − 504
mso-style-noshow:yes;
+ − 505
mso-style-priority:99;
+ − 506
mso-style-unhide:no;
+ − 507
mso-style-locked:yes;
+ − 508
mso-style-link:Kommentartext;
+ − 509
mso-ansi-language:DE;}
+ − 510
span.KommentarthemaZchn
+ − 511
{mso-style-name:"Kommentarthema Zchn";
+ − 512
mso-style-noshow:yes;
+ − 513
mso-style-priority:99;
+ − 514
mso-style-unhide:no;
+ − 515
mso-style-locked:yes;
+ − 516
mso-style-parent:"Kommentartext Zchn";
+ − 517
mso-style-link:Kommentarthema;
+ − 518
mso-ansi-language:DE;
+ − 519
font-weight:bold;}
+ − 520
span.SprechblasentextZchn
+ − 521
{mso-style-name:"Sprechblasentext Zchn";
+ − 522
mso-style-noshow:yes;
+ − 523
mso-style-priority:99;
+ − 524
mso-style-unhide:no;
+ − 525
mso-style-locked:yes;
+ − 526
mso-style-link:Sprechblasentext;
+ − 527
mso-ansi-font-size:8.0pt;
+ − 528
mso-bidi-font-size:8.0pt;
+ − 529
font-family:"Tahoma","sans-serif";
+ − 530
mso-ascii-font-family:Tahoma;
+ − 531
mso-hansi-font-family:Tahoma;
+ − 532
mso-bidi-font-family:Tahoma;
+ − 533
mso-ansi-language:DE;}
+ − 534
span.GramE
+ − 535
{mso-style-name:"";
+ − 536
mso-gram-e:yes;}
+ − 537
.MsoChpDefault
+ − 538
{mso-style-type:export-only;
+ − 539
mso-default-props:yes;
+ − 540
mso-ascii-font-family:Calibri;
+ − 541
mso-fareast-font-family:Calibri;
+ − 542
mso-hansi-font-family:Calibri;}
+ − 543
@page Section1
+ − 544
{size:595.3pt 841.9pt;
+ − 545
margin:70.85pt 70.85pt 2.0cm 70.85pt;
+ − 546
mso-header-margin:35.4pt;
+ − 547
mso-footer-margin:35.4pt;
+ − 548
mso-paper-source:0;}
+ − 549
div.Section1
+ − 550
{page:Section1;}
+ − 551
/* List Definitions */
+ − 552
@list l0
+ − 553
{mso-list-id:711465342;
+ − 554
mso-list-type:hybrid;
+ − 555
mso-list-template-ids:-398029370 -1506878708 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+ − 556
@list l0:level1
+ − 557
{mso-level-start-at:0;
+ − 558
mso-level-number-format:bullet;
+ − 559
mso-level-text:\F0D8;
+ − 560
mso-level-tab-stop:none;
+ − 561
mso-level-number-position:left;
+ − 562
text-indent:-18.0pt;
+ − 563
font-family:Wingdings;
+ − 564
mso-fareast-font-family:"Times New Roman";
+ − 565
mso-bidi-font-family:"Courier New";}
+ − 566
@list l1
+ − 567
{mso-list-id:1152210869;
+ − 568
mso-list-type:hybrid;
+ − 569
mso-list-template-ids:1896245118 489165068 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+ − 570
@list l1:level1
+ − 571
{mso-level-start-at:0;
+ − 572
mso-level-number-format:bullet;
+ − 573
mso-level-text:\F0D8;
+ − 574
mso-level-tab-stop:none;
+ − 575
mso-level-number-position:left;
+ − 576
text-indent:-18.0pt;
+ − 577
font-family:Wingdings;
+ − 578
mso-fareast-font-family:"Times New Roman";
+ − 579
mso-bidi-font-family:"Courier New";}
+ − 580
@list l2
+ − 581
{mso-list-id:2131390884;
+ − 582
mso-list-type:hybrid;
+ − 583
mso-list-template-ids:-835441590 1095827004 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+ − 584
@list l2:level1
+ − 585
{mso-level-start-at:0;
+ − 586
mso-level-number-format:bullet;
+ − 587
mso-level-text:\F0D8;
+ − 588
mso-level-tab-stop:none;
+ − 589
mso-level-number-position:left;
+ − 590
margin-left:21.4pt;
+ − 591
text-indent:-18.0pt;
+ − 592
font-family:Wingdings;
+ − 593
mso-fareast-font-family:"Times New Roman";
+ − 594
mso-bidi-font-family:"Courier New";}
+ − 595
ol
+ − 596
{margin-bottom:0cm;}
+ − 597
ul
+ − 598
{margin-bottom:0cm;}
+ − 599
-->
+ − 600
</style>
+ − 601
<!--[if gte mso 10]>
+ − 602
<style>
+ − 603
/* Style Definitions */
+ − 604
table.MsoNormalTable
+ − 605
{mso-style-name:"Normale Tabelle";
+ − 606
mso-tstyle-rowband-size:0;
+ − 607
mso-tstyle-colband-size:0;
+ − 608
mso-style-noshow:yes;
+ − 609
mso-style-priority:99;
+ − 610
mso-style-qformat:yes;
+ − 611
mso-style-parent:"";
+ − 612
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
+ − 613
mso-para-margin:0cm;
+ − 614
mso-para-margin-bottom:.0001pt;
+ − 615
mso-pagination:widow-orphan;
+ − 616
font-size:10.0pt;
+ − 617
font-family:"Calibri","sans-serif";}
+ − 618
</style>
+ − 619
<![endif]--><!--[if gte mso 9]><xml>
+ − 620
<o:shapedefaults v:ext="edit" spidmax="2050"/>
+ − 621
</xml><![endif]--><!--[if gte mso 9]><xml>
+ − 622
<o:shapelayout v:ext="edit">
+ − 623
<o:idmap v:ext="edit" data="1"/>
+ − 624
<o:rules v:ext="edit">
+ − 625
<o:r id="V:Rule4" type="connector" idref="#_x0000_s1033"/>
+ − 626
<o:r id="V:Rule6" type="connector" idref="#_x0000_s1036"/>
+ − 627
</o:rules>
+ − 628
</o:shapelayout></xml><![endif]-->
+ − 629
</head>
+ − 630
+ − 631
<body lang=DE link=blue vlink=purple style='tab-interval:35.4pt'>
+ − 632
+ − 633
<div class=Section1>
+ − 634
+ − 635
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 636
style='mso-ansi-language:EN-US'>SQLite implementation for Symbian OS with an ADO.NET
+ − 637
Provider for Red Five Labs’ .NET Compact Framework 1.0<o:p></o:p></span></b></p>
+ − 638
+ − 639
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 640
style='mso-ansi-language:EN-US'>Converting SQLite to S60<o:p></o:p></span></b></p>
+ − 641
+ − 642
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Red Five Labs’
+ − 643
Net60, a .NET Compact Framework Version 1.0, introduces .NET programming to the
+ − 644
great family of Symbian S60 smartphones. Now it is possible to run a managed .NET
+ − 645
application, written for Windows Mobile, on S60 smartphones. Unfortunately,
+ − 646
however, the .NET Compact Framework 1.0 does not provide any form of database
+ − 647
support. This is first supported in the .NET Compact Framework 2.0 together
+ − 648
with the SQL Server Compact Edition. This SQL Server only runs on Windows
+ − 649
Mobile <span class=GramE>devices which means</span> another database system is
+ − 650
needed to provide database functionality to Symbian devices. Enter SQLite for
+ − 651
S60.<o:p></o:p></span></p>
+ − 652
+ − 653
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>SQLite is a
+ − 654
popular open source, stand-alone database system that was written in C and is
+ − 655
available for Windows, Windows Mobile, OS2 and <span class=GramE>Unix</span> operating
+ − 656
systems. It is ACID compliant and supports the SQL-92 standard. The Symbian OS at
+ − 657
present does not provide a database system, however in the future Symbian OS
+ − 658
Version 9.4 will support a SQLite implementation. <o:p></o:p></span></p>
+ − 659
+ − 660
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 661
style='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p>
+ − 662
+ − 663
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 664
style='mso-ansi-language:EN-US'>PIPS for S60 made porting SQLite to Symbian OS
+ − 665
possible<o:p></o:p></span></b></p>
+ − 666
+ − 667
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>At the
+ − 668
beginning of 2007 Symbian published the P.I.P.S. SDK (<a
+ − 669
href="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>
+ − 670
) for the S60 and UIQ platforms. P.I.P.S. is the implementation of the POSIX
+ − 671
Interface for Symbian OS that provides C Libraries like STDIO or STDLIB. With
+ − 672
the Open C SDK it is possible to port the SQLite library written in ANSI C to
+ − 673
Symbian OS. To do such a conversion of an existing ANSI C project knowledge of
+ − 674
programming for Symbian OS is needed. A good description of the conversion of
+ − 675
SQLite to S60 is the article on Dr.Dobbs (<a
+ − 676
href="http://www.ddj.com/mobile/198702204?pgno=2">http://www.ddj.com/mobile/198702204?pgno=2</a>)
+ − 677
and describes how such a port of SQLite could be done. By following these
+ − 678
instructions, it was easy to create a project that could compile the C files of
+ − 679
the SQLite project. <o:p></o:p></span></p>
+ − 680
+ − 681
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Note, the
+ − 682
PIPS SDK for S60 must be installed to the PC to compile the SqliteS60 project
+ − 683
whilst the PIPS_s60_1_2_SS .SIS must be installed on the device.<o:p></o:p></span></p>
+ − 684
+ − 685
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 686
style='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p>
+ − 687
+ − 688
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 689
style='mso-ansi-language:EN-US'>Converting SQLite .C files to .CPP files<o:p></o:p></span></b></p>
+ − 690
+ − 691
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Before the
+ − 692
SQLite source could be completely compiled, the file IO operations had to be
+ − 693
rewritten. This part of SQLite is not platform independent and uses the native
+ − 694
OS operations to open, read and write files.<span style='mso-spacerun:yes'>
+ − 695
</span>The first step was to rewrite the file operations with the STDIO
+ − 696
implementation.<span style='mso-spacerun:yes'> </span>For example the <b
+ − 697
style='mso-bidi-font-weight:normal'>OpenDatabase</b> method was modified to use
+ − 698
the <b style='mso-bidi-font-weight:normal'>fopen</b> method of POSIX. Unfortunately
+ − 699
this did not result in the outcome that was expected. <span
+ − 700
style='mso-spacerun:yes'> </span>On the test device this implementation does
+ − 701
not run. After analyzing this, it seems to be that the ANSI C file IO methods
+ − 702
cause the error. <span style='mso-spacerun:yes'> </span>The Symbian API is an
+ − 703
object oriented programming interface, therefore to use the native file IO <span
+ − 704
class=GramE>classes,</span> the SQLite source must be converted from .C files
+ − 705
to .CPP files. Renaming the files was easy, but after renaming the source files
+ − 706
over 500 compiler errors were output. Most of these were language differences
+ − 707
between C and C++ and could be solved quickly. After resolving these problems,
+ − 708
programming the OS routines with the Symbian file IO classes could begin.<o:p></o:p></span></p>
+ − 709
+ − 710
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>For this
+ − 711
part a new file was created and added to the SQLiteS60 project
+ − 712
(os_symbian.cpp). This file includes all methods that SQLite expects for file
+ − 713
IO. The conversion of the existing C files of the SQLite project to CPP files
+ − 714
makes the SQLiteS60 project very different from the main source. As a result of
+ − 715
this, the implementations for the other OS operations, i.e. for OS2, Windows and
+ − 716
Mac, were deleted from this project. SQLite uses a structure to reference the
+ − 717
correct OS operations and is implemented in every OS implementation. Due to this
+ − 718
practice, only a compiler switch is needed to generate a run-able SQLite library
+ − 719
for the specific operating system. As this structure is not used in the S60
+ − 720
conversion project, it has also been removed from the code and the Symbian IO
+ − 721
methods are directly connected to the OS methods in the file os.cpp.<o:p></o:p></span></p>
+ − 722
+ − 723
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 724
+ − 725
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>A simple
+ − 726
example to open or create a file with native Symbian methods is shown in the
+ − 727
following code snippet.<o:p></o:p></span></p>
+ − 728
+ − 729
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 730
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 731
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 732
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 733
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 734
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:
+ − 735
7.5pt;line-height:110%;mso-ansi-language:EN-US'>RFs fileSession;<o:p></o:p></span></pre><pre
+ − 736
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 737
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 738
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 739
lang=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><pre
+ − 740
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 741
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 742
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 743
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 744
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 745
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 746
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 747
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 748
mso-ansi-language:EN-US'>fileSession.Connect(</span></span><span lang=EN-US
+ − 749
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>);<o:p></o:p></span></pre><pre
+ − 750
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 751
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 752
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 753
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 754
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 755
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 756
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 757
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>TInt err=<span
+ − 758
class=GramE>file.Open(</span>fsSession,fileName,shareMode);<o:p></o:p></span></pre><pre
+ − 759
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 760
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 761
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 762
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 763
mso-ansi-language:EN-US'>if</span></span><span lang=EN-US style='font-size:
+ − 764
7.5pt;line-height:110%;mso-ansi-language:EN-US'> (err==KErrNotFound) // file does not exist - create it<o:p></o:p></span></pre><pre
+ − 765
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 766
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 767
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 768
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>{<o:p></o:p></span></pre><pre
+ − 769
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 770
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 771
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 772
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 773
class=GramE>err=</span>file.Create(fsSession,fileName,shareMode);<o:p></o:p></span></pre><pre
+ − 774
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 775
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 776
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 777
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre><pre
+ − 778
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 779
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 780
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 781
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 782
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 783
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 784
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 785
lang=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><pre
+ − 786
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 787
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 788
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 789
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 790
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 791
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 792
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 793
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 794
mso-ansi-language:EN-US'>file.Close(</span></span><span lang=EN-US
+ − 795
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>);<o:p></o:p></span></pre><pre
+ − 796
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 797
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 798
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 799
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 800
mso-ansi-language:EN-US'>fileSession.Close(</span></span><span lang=EN-US
+ − 801
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>);<o:p></o:p></span></pre></div>
+ − 802
+ − 803
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 804
+ − 805
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The RFs
+ − 806
class defines the file server session. Any file operation in controlled by an
+ − 807
instance of this class. After this instance is created, the file can be opened
+ − 808
over the RFile class. The RFile class contains all file IO operations. By using
+ − 809
these two classes to extend the <b style='mso-bidi-font-weight:normal'>sqlite3_file</b>
+ − 810
structure, the SQLite file IO operations can use the class instances of RFs and
+ − 811
RFile as shown in the struct below.<o:p></o:p></span></p>
+ − 812
+ − 813
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 814
+ − 815
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 816
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 817
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 818
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 819
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 820
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span class=GramE><span lang=EN-US
+ − 821
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>struct</span></span><span
+ − 822
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'> symbianFile {<o:p></o:p></span></pre><pre
+ − 823
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 824
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 825
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 826
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 827
class=GramE>int</span> isOpen;<o:p></o:p></span></pre><pre style='margin-top:
+ − 828
3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;
+ − 829
line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;
+ − 830
padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US
+ − 831
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 832
class=GramE>unsigned</span> char locktype; /* Type of lock currently held on this file */<o:p></o:p></span></pre><pre
+ − 833
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 834
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 835
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 836
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 837
class=GramE>short</span> sharedLockByte;<span style='mso-spacerun:yes'> </span>/* Randomly chosen byte used as a shared lock */<o:p></o:p></span></pre><pre
+ − 838
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 839
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 840
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 841
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 842
class=GramE>char</span> fileName[512];<o:p></o:p></span></pre><pre
+ − 843
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 844
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 845
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 846
lang=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><pre
+ − 847
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 848
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 849
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 850
lang=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><pre
+ − 851
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 852
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 853
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 854
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>};<o:p></o:p></span></pre></div>
+ − 855
+ − 856
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 857
+ − 858
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Finally all
+ − 859
the methods that SQLite needs to handle file operations must be rewritten by
+ − 860
using this structure and the RFile methods. The following example shows how to
+ − 861
close an open file and the file server session.<o:p></o:p></span></p>
+ − 862
+ − 863
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 864
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 865
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 866
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 867
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 868
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span class=GramE><span lang=EN-US
+ − 869
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>int</span></span><span
+ − 870
lang=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><pre
+ − 871
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 872
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 873
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 874
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 875
class=GramE>int</span> rc, cnt = 0;<o:p></o:p></span></pre><pre
+ − 876
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 877
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 878
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 879
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 880
class=GramE>symbianFile</span> *pFile = (symbianFile*)id;<o:p></o:p></span></pre><pre
+ − 881
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 882
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 883
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 884
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 885
class=GramE>pFile</span>->file.Close();<o:p></o:p></span></pre><pre
+ − 886
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 887
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 888
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 889
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 890
class=GramE>pFile</span>->session.Close();<o:p></o:p></span></pre><pre
+ − 891
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 892
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 893
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 894
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 895
class=GramE>return</span> SQLITE_OK;<o:p></o:p></span></pre><pre
+ − 896
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 897
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 898
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 899
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre></div>
+ − 900
+ − 901
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 902
+ − 903
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The other file
+ − 904
IO operations are similar to the <b style='mso-bidi-font-weight:normal'>close</b>
+ − 905
method. The <b style='mso-bidi-font-weight:normal'>open</b> method of RFile expects
+ − 906
a Unicode string that contains the name of the database file. A conversion of
+ − 907
the ASCII format to Unicode must be done before calling the <b
+ − 908
style='mso-bidi-font-weight:normal'>open</b> method. For such a conversion the <b
+ − 909
style='mso-bidi-font-weight:normal'>CCnvCharacterSetConverter</b> class can be
+ − 910
used. This class needs the file server session handle and the string to convert
+ − 911
to Unicode. The following example shows the converter method used in SQLite.<o:p></o:p></span></p>
+ − 912
+ − 913
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 914
+ − 915
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 916
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 917
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 918
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 919
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 920
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span class=GramE><span lang=EN-US
+ − 921
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>void</span></span><span
+ − 922
lang=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><pre
+ − 923
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 924
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 925
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 926
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>{<o:p></o:p></span></pre><pre
+ − 927
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 928
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 929
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 930
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::<span
+ − 931
class=GramE>NewL(</span>);<o:p></o:p></span></pre><pre style='margin-top:3.4pt;
+ − 932
margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;
+ − 933
line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;
+ − 934
padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US
+ − 935
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 936
class=GramE>converter</span>->PrepareToConvertToOrFromL(KCharacterSetIdentifierUtf8, session);<o:p></o:p></span></pre><pre
+ − 937
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 938
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 939
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 940
lang=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><pre
+ − 941
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 942
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 943
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 944
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>TPtrC8 <span
+ − 945
class=GramE>ptr(</span>(const unsigned char*)str);<o:p></o:p></span></pre><pre
+ − 946
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 947
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 948
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 949
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 950
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 951
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 952
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 953
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 954
class=GramE>int</span> state = CCnvCharacterSetConverter::KStateDefault;<o:p></o:p></span></pre><pre
+ − 955
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 956
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 957
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 958
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 959
class=GramE>converter</span>->ConvertToUnicode(aUnicode, ptr, state);<o:p></o:p></span></pre><pre
+ − 960
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 961
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 962
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 963
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre></div>
+ − 964
+ − 965
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 966
+ − 967
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>After
+ − 968
rewriting all operations used by SQLite to use the RFile class, in the os_symbian.cpp
+ − 969
<span class=GramE>file ,</span> the project can be compiled by the Symbian C
+ − 970
compiler (which has been included in the build chain by installing the Carbide
+ − 971
plug in for Visual Studio) and a Symbian Library is created that can be used on
+ − 972
a S60 device as a database. This library takes the form of a native Symbian DLL
+ − 973
called sqlite.dll.<o:p></o:p></span></p>
+ − 974
+ − 975
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The
+ − 976
database file that the sqlite.dll generates can be used by any other
+ − 977
implementation of SQLite. So it will be possible to transfer all stored data
+ − 978
from a smart device to a database server in a company network.<o:p></o:p></span></p>
+ − 979
+ − 980
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 981
style='mso-ansi-language:EN-US'>Compiling sqlite.dll from the SQLiteS60 project<o:p></o:p></span></b></p>
+ − 982
+ − 983
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>It is
+ − 984
possible to compile the sqlite.dll using Visual Studio with the Carbide plugin.
+ − 985
<o:p></o:p></span></p>
+ − 986
+ − 987
<p class=MsoNormal><span class=GramE><span lang=EN-US style='mso-ansi-language:
+ − 988
EN-US'>Another<span style='mso-spacerun:yes'> </span>easier</span></span><span
+ − 989
lang=EN-US style='mso-ansi-language:EN-US'> possibility is to type the
+ − 990
following command lines in the ‘group’ directory of the SqliteS60 folder.<span
+ − 991
style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
+ − 992
+ − 993
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>To compile
+ − 994
for the S60 device (GCCE compiler) and as a release version:<b
+ − 995
style='mso-bidi-font-weight:normal'><o:p></o:p></b></span></p>
+ − 996
+ − 997
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 998
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 999
margin-left:0cm;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 1000
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 1001
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 1002
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:
+ − 1003
7.5pt;line-height:110%;mso-ansi-language:EN-US'>> Bldmake bldfiles [enter]<o:p></o:p></span></pre><pre
+ − 1004
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1005
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1006
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><b
+ − 1007
style='mso-bidi-font-weight:normal'><span lang=EN-US style='font-size:7.5pt;
+ − 1008
line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></b></pre><pre
+ − 1009
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1010
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1011
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><b
+ − 1012
style='mso-bidi-font-weight:normal'><span lang=EN-US style='font-size:7.5pt;
+ − 1013
line-height:110%;mso-ansi-language:EN-US'>> <span class=GramE>abld</span> build gcce urel<o:p></o:p></span></b></pre></div>
+ − 1014
+ − 1015
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1016
+ − 1017
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>For the
+ − 1018
emulator with debug information:<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
+ − 1019
+ − 1020
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 1021
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 1022
margin-left:0cm;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 1023
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 1024
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 1025
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:
+ − 1026
7.5pt;line-height:110%;mso-ansi-language:EN-US'>> Bldmake bldfiles [enter]<o:p></o:p></span></pre><pre
+ − 1027
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1028
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1029
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1030
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1031
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1032
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1033
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1034
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>> <span
+ − 1035
class=GramE>abld</span> build winscw udeb [enter]<o:p></o:p></span></pre></div>
+ − 1036
+ − 1037
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1038
style='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p>
+ − 1039
+ − 1040
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1041
style='mso-ansi-language:EN-US'>Note:</span></b><span lang=EN-US
+ − 1042
style='mso-ansi-language:EN-US'> <span style='mso-spacerun:yes'> </span>No
+ − 1043
spaces must be present in the directory path where the SQliteS60 project is
+ − 1044
located. Also, the command line console must be run with “Admin” privileges.<o:p></o:p></span></p>
+ − 1045
+ − 1046
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1047
style='mso-ansi-language:EN-US'><br>
+ − 1048
Writing an ADO.NET Provider using Net60 Compact Framework 1.0<o:p></o:p></span></b></p>
+ − 1049
+ − 1050
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>After the
+ − 1051
successful conversion of the SQLite code to the S60 platform, the development
+ − 1052
of an ADO.NET provider for Net60 that uses the SQLite library for Symbian OS can
+ − 1053
be started. As there are some existing implementations of an ADO.NET provider
+ − 1054
for the .NET Framework, this development did not have to start at the grass
+ − 1055
roots level. Mono, for example, contains such an implementation <span
+ − 1056
class=GramE>( </span><a href="http://www.mono-project.com">www.mono-project.com</a>
+ − 1057
). This could be used as a base for the ADO.NET provider for Net60.<o:p></o:p></span></p>
+ − 1058
+ − 1059
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The .NET Compact
+ − 1060
Framework 1.0 only provides the basic interfaces like IDbConnection,
+ − 1061
IDbCommand, <span class=GramE>IDbParameter</span> and so on. Other
+ − 1062
functionality such as the base classes in the System.Data.Common namespace <span
+ − 1063
class=GramE>are</span> not provided. Also the DbDataAdapter base class is not implemented.
+ − 1064
So this implementation cannot support DataAdapters, however with these basic
+ − 1065
interfaces it is possible to develop an ADO.NET Provider that supports all
+ − 1066
basic features of the .NET Framework 1.1 for the desktop.<o:p></o:p></span></p>
+ − 1067
+ − 1068
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The
+ − 1069
SQLiteS60 project results in a native Symbian DLL, sqlite.dll, which must be
+ − 1070
used from within managed .NET code. Net60, and the .NET Compact Framework,
+ − 1071
supports interoperability between managed and unmanaged code through a
+ − 1072
mechanism called P/Invoke.<o:p></o:p></span></p>
+ − 1073
+ − 1074
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The diagram
+ − 1075
below shows the interaction between the various components of the solution:<o:p></o:p></span></p>
+ − 1076
+ − 1077
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1078
+ − 1079
<p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t202"
+ − 1080
coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ − 1081
<v:stroke joinstyle="miter"/>
+ − 1082
<v:path gradientshapeok="t" o:connecttype="rect"/>
+ − 1083
</v:shapetype><v:shape id="_x0000_s1027" type="#_x0000_t202" style='position:absolute;
+ − 1084
margin-left:62.95pt;margin-top:62.25pt;width:285.5pt;height:107.65pt;
+ − 1085
z-index:1;mso-width-relative:margin;mso-height-relative:margin'>
+ − 1086
<v:textbox style='mso-next-textbox:#_x0000_s1027'>
+ − 1087
<![if !mso]>
+ − 1088
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1089
<tr>
+ − 1090
<td><![endif]>
+ − 1091
<div>
+ − 1092
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
+ − 1093
style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1094
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
+ − 1095
style='font-size:14.0pt;mso-bidi-font-size:11.0pt;line-height:115%;
+ − 1096
mso-ansi-language:EN-US'>Net60<o:p></o:p></span></p>
+ − 1097
</div>
+ − 1098
<![if !mso]></td>
+ − 1099
</tr>
+ − 1100
</table>
+ − 1101
<![endif]></v:textbox>
+ − 1102
</v:shape><v:shape id="_x0000_s1030" type="#_x0000_t202" style='position:absolute;
+ − 1103
margin-left:215.8pt;margin-top:126.3pt;width:132.85pt;height:43.75pt;
+ − 1104
z-index:2;mso-width-relative:margin;mso-height-relative:margin'>
+ − 1105
<v:textbox style='mso-next-textbox:#_x0000_s1030'>
+ − 1106
<![if !mso]>
+ − 1107
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1108
<tr>
+ − 1109
<td><![endif]>
+ − 1110
<div>
+ − 1111
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
+ − 1112
style='mso-ansi-language:EN-US'>SQLiteS60.dll<o:p></o:p></span></p>
+ − 1113
</div>
+ − 1114
<![if !mso]></td>
+ − 1115
</tr>
+ − 1116
</table>
+ − 1117
<![endif]></v:textbox>
+ − 1118
</v:shape><v:shape id="_x0000_s1026" type="#_x0000_t202" style='position:absolute;
+ − 1119
margin-left:62.95pt;margin-top:173.55pt;width:287.05pt;height:33.45pt;
+ − 1120
z-index:3;mso-height-percent:200;mso-height-percent:200;mso-width-relative:margin;
+ − 1121
mso-height-relative:margin'>
+ − 1122
<v:textbox style='mso-fit-shape-to-text:t'>
+ − 1123
<![if !mso]>
+ − 1124
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1125
<tr>
+ − 1126
<td><![endif]>
+ − 1127
<div>
+ − 1128
<p class=MsoNormal align=center style='text-align:center'>Symbian OS</p>
+ − 1129
</div>
+ − 1130
<![if !mso]></td>
+ − 1131
</tr>
+ − 1132
</table>
+ − 1133
<![endif]></v:textbox>
+ − 1134
</v:shape><v:shape id="_x0000_s1028" type="#_x0000_t202" style='position:absolute;
+ − 1135
margin-left:62.95pt;margin-top:24.15pt;width:285.7pt;height:33.45pt;z-index:4;
+ − 1136
mso-height-percent:200;mso-height-percent:200;mso-width-relative:margin;
+ − 1137
mso-height-relative:margin'>
+ − 1138
<v:textbox style='mso-next-textbox:#_x0000_s1028;mso-fit-shape-to-text:t'>
+ − 1139
<![if !mso]>
+ − 1140
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1141
<tr>
+ − 1142
<td><![endif]>
+ − 1143
<div>
+ − 1144
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
+ − 1145
style='mso-ansi-language:EN-US'>.NET CF 1.0 App using SQLite<o:p></o:p></span></p>
+ − 1146
</div>
+ − 1147
<![if !mso]></td>
+ − 1148
</tr>
+ − 1149
</table>
+ − 1150
<![endif]></v:textbox>
+ − 1151
</v:shape><v:shape id="_x0000_s1029" type="#_x0000_t202" style='position:absolute;
+ − 1152
margin-left:278.25pt;margin-top:149.15pt;width:70.2pt;height:20.9pt;z-index:5;
+ − 1153
mso-width-relative:margin;mso-height-relative:margin'>
+ − 1154
<v:textbox>
+ − 1155
<![if !mso]>
+ − 1156
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1157
<tr>
+ − 1158
<td><![endif]>
+ − 1159
<div>
+ − 1160
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
+ − 1161
style='mso-ansi-language:EN-US'>PIPS <o:p></o:p></span></p>
+ − 1162
</div>
+ − 1163
<![if !mso]></td>
+ − 1164
</tr>
+ − 1165
</table>
+ − 1166
<![endif]></v:textbox>
+ − 1167
</v:shape><v:shape id="_x0000_s1031" type="#_x0000_t202" style='position:absolute;
+ − 1168
margin-left:246.9pt;margin-top:62.25pt;width:101.75pt;height:38.55pt;
+ − 1169
z-index:6;mso-width-relative:margin;mso-height-relative:margin'>
+ − 1170
<v:textbox style='mso-next-textbox:#_x0000_s1031'>
+ − 1171
<![if !mso]>
+ − 1172
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1173
<tr>
+ − 1174
<td><![endif]>
+ − 1175
<div>
+ − 1176
<p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
+ − 1177
11.0pt;line-height:115%;mso-ansi-language:EN-US'>System.Data.SQLiteClient.dll</span><span
+ − 1178
style='font-size:10.0pt;mso-bidi-font-size:11.0pt;line-height:115%'><o:p></o:p></span></p>
+ − 1179
</div>
+ − 1180
<![if !mso]></td>
+ − 1181
</tr>
+ − 1182
</table>
+ − 1183
<![endif]></v:textbox>
+ − 1184
</v:shape><v:shape id="_x0000_s1034" type="#_x0000_t202" style='position:absolute;
+ − 1185
margin-left:355.45pt;margin-top:67.25pt;width:118.1pt;height:33.55pt;
+ − 1186
z-index:7;mso-width-relative:margin;mso-height-relative:margin' filled="f"
+ − 1187
stroked="f">
+ − 1188
<v:textbox style='mso-next-textbox:#_x0000_s1034'>
+ − 1189
<![if !mso]>
+ − 1190
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1191
<tr>
+ − 1192
<td><![endif]>
+ − 1193
<div>
+ − 1194
<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
+ − 1195
style='font-size:9.0pt;mso-bidi-font-size:11.0pt;line-height:115%;
+ − 1196
mso-ansi-language:EN-US'>P/Invoke from managed code to native Symbian DLL</span><span
+ − 1197
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+ − 1198
</div>
+ − 1199
<![if !mso]></td>
+ − 1200
</tr>
+ − 1201
</table>
+ − 1202
<![endif]></v:textbox>
+ − 1203
</v:shape><v:shape id="_x0000_s1037" type="#_x0000_t202" style='position:absolute;
+ − 1204
margin-left:308.15pt;margin-top:98.15pt;width:39.7pt;height:15.65pt;z-index:8'
+ − 1205
strokecolor="white">
+ − 1206
<v:textbox>
+ − 1207
<![if !mso]>
+ − 1208
<table cellpadding=0 cellspacing=0 width="100%">
+ − 1209
<tr>
+ − 1210
<td><![endif]>
+ − 1211
<div>
+ − 1212
<p class=MsoNormal><o:p> </o:p></p>
+ − 1213
</div>
+ − 1214
<![if !mso]></td>
+ − 1215
</tr>
+ − 1216
</table>
+ − 1217
<![endif]></v:textbox>
+ − 1218
</v:shape><v:shapetype id="_x0000_t32" coordsize="21600,21600" o:spt="32"
+ − 1219
o:oned="t" path="m,l21600,21600e" filled="f">
+ − 1220
<v:path arrowok="t" fillok="f" o:connecttype="none"/>
+ − 1221
<o:lock v:ext="edit" shapetype="t"/>
+ − 1222
</v:shapetype><v:shape id="_x0000_s1036" type="#_x0000_t32" style='position:absolute;
+ − 1223
margin-left:307.2pt;margin-top:100.9pt;width:0;height:25.35pt;z-index:9'
+ − 1224
o:connectortype="straight"/><v:shape id="_x0000_s1033" type="#_x0000_t32"
+ − 1225
style='position:absolute;margin-left:335.7pt;margin-top:90.2pt;width:25.95pt;
+ − 1226
height:23.6pt;flip:x;z-index:10' o:connectortype="straight">
+ − 1227
<v:stroke dashstyle="1 1" endarrow="block" endcap="round"/>
+ − 1228
</v:shape><![endif]--><![if !vml]><span style='mso-ignore:vglayout'>
+ − 1229
+ − 1230
<table cellpadding=0 cellspacing=0 align=left>
+ − 1231
<tr>
+ − 1232
<td width=83 height=31></td>
+ − 1233
</tr>
+ − 1234
<tr>
+ − 1235
<td></td>
+ − 1236
<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>
+ − 1237
</tr>
+ − 1238
</table>
+ − 1239
+ − 1240
</span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1241
+ − 1242
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1243
+ − 1244
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1245
+ − 1246
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1247
+ − 1248
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1249
+ − 1250
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1251
+ − 1252
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1253
+ − 1254
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1255
+ − 1256
<br style='mso-ignore:vglayout' clear=ALL>
+ − 1257
+ − 1258
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The native SQLite
+ − 1259
methods, such as <b style='mso-bidi-font-weight:normal'>libversion</b>, <b
+ − 1260
style='mso-bidi-font-weight:normal'>open</b> etc., are called using the
+ − 1261
P/Invoke mechanism in the .NET code. To do this, the entry point of the corresponding
+ − 1262
method in the SQLite library must be known. Symbian has a specific entry point
+ − 1263
model. All methods are exported from a library by ordinal numbers instead of
+ − 1264
method names. The relation of method name and export number can be found in the
+ − 1265
generated .DEF file of the SQLite.dll or by using a dump tool.<o:p></o:p></span></p>
+ − 1266
+ − 1267
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The
+ − 1268
following example shows how a native SQLite method is defined in .NET. The <b
+ − 1269
style='mso-bidi-font-weight:normal'>DLLImort</b> attribute defines the library
+ − 1270
name and the entry points were the method is located in the library. The CallingConvention
+ − 1271
defines the type of data exchange between the unmanaged SQLite and the managed
+ − 1272
.NET code. <o:p></o:p></span></p>
+ − 1273
+ − 1274
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 1275
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 1276
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 1277
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 1278
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 1279
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:
+ − 1280
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><pre
+ − 1281
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1282
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1283
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1284
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 1285
mso-ansi-language:EN-US'>public</span></span><span lang=EN-US style='font-size:
+ − 1286
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>
+ − 1287
+ − 1288
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1289
+ − 1290
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Based on
+ − 1291
the existing implementations of SQLite for .NET it was easy to develop an
+ − 1292
ADO.NET Provider that runs on the Compact Framework. To test the behavior of a
+ − 1293
.NET application, this implementation provides a P/Invoke call for each <b
+ − 1294
style='mso-bidi-font-weight:normal'>sqlite3_</b> method call to the Symbian
+ − 1295
version contained in the sqlite.dll. <span class=GramE>These</span> P/Invokes
+ − 1296
are performed in the SymbianMethods.cs file in the managed System.Data.SQLiteClient.dll
+ − 1297
extension class.<o:p></o:p></span></p>
+ − 1298
+ − 1299
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Interestingly,
+ − 1300
all applications are also executable on the smartphone device emulator. To
+ − 1301
change between the emulator and device, only the emulator flag in the
+ − 1302
connection string must be set to true or false. For the emulator the Windows
+ − 1303
version of SQLite is required <span class=GramE>( </span><a
+ − 1304
href="http://www.sqlite.org">www.sqlite.org</a> ), the emulator flag links the
+ − 1305
P/Invoke call to that library.<o:p></o:p></span></p>
+ − 1306
+ − 1307
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1308
style='mso-ansi-language:EN-US'>Deploying SQLiteS60 to the device<o:p></o:p></span></b></p>
+ − 1309
+ − 1310
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>In order to
+ − 1311
deploy the SQLite database to device, the sqlite.dll must be deployed to the \sys\bin
+ − 1312
directory and the System.Data.SQLiteClient.dll to the Red Five Labs GAC
+ − 1313
repository on the device which is \Resource\RedFiveLabs\Gac. The sqlite.pkg is
+ − 1314
used together with the Symbian makesis.exe to create an installable SQLite.SIS
+ − 1315
file which deploys these two libraries to their respective destinations. If the
+ − 1316
sqlite.dll and System.Data.SQLiteClient.dll are placed in the same directory as
+ − 1317
the sqlite.pcg file, an example command line to generate the Sqlite.sis is <o:p></o:p></span></p>
+ − 1318
+ − 1319
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 1320
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 1321
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 1322
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 1323
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 1324
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:
+ − 1325
7.5pt;line-height:110%;mso-ansi-language:EN-US'>C:\temp\sis>makesis sqlite.pkg<o:p></o:p></span></pre></div>
+ − 1326
+ − 1327
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1328
style='mso-ansi-language:EN-US'><o:p> </o:p></span></b></p>
+ − 1329
+ − 1330
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1331
style='mso-ansi-language:EN-US'>Using SQLite<o:p></o:p></span></b></p>
+ − 1332
+ − 1333
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The
+ − 1334
implementation for Compact Framework 1.0 contains the SQLiteConnection class
+ − 1335
that handles the connection to the sqlite database and creates new
+ − 1336
SQLiteCommand instances. With these instances database queries can be sent to
+ − 1337
and the results received from the database. As a result a SQLiteDataReader set instance
+ − 1338
can be returned. This class provides the functionality to step through the rows
+ − 1339
of the result sets. Transactional processing can be performed by using the
+ − 1340
SQLiteTransaction class. An instance for that class can be created over the
+ − 1341
SQLiteConnection instance. Any SQLiteCommand can contain one or more SQL statements.
+ − 1342
These statements are handled in the SQLiteStatement class. Each statement is
+ − 1343
represented by an instance of that class. This class calls the native SQLite
+ − 1344
methods to perform the database operations.<o:p></o:p></span></p>
+ − 1345
+ − 1346
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1347
+ − 1348
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The
+ − 1349
following example shows how to open a database by using the SQLiteConnection
+ − 1350
class.<o:p></o:p></span></p>
+ − 1351
+ − 1352
<div style='mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt:
+ − 1353
solid #CCCCCC .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#EEEEEE;
+ − 1354
margin-left:3.4pt;margin-right:3.4pt'><pre style='margin-top:3.4pt;margin-right:
+ − 1355
0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;line-height:110%;
+ − 1356
background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;padding:0cm;
+ − 1357
mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US style='font-size:
+ − 1358
7.5pt;line-height:110%;mso-ansi-language:EN-US'>SQLiteConnection _Connection = new <span
+ − 1359
class=GramE>SQLiteConnection(</span>"Data Source=test1.db;NewDatabase=True;<o:p></o:p></span></pre><pre
+ − 1360
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1361
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1362
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1363
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span
+ − 1364
style='mso-tab-count:5'> </span>Synchronous=Off<span
+ − 1365
class=GramE>;Encoding</span>=UTF8;Emulator=true");<o:p></o:p></span></pre><pre
+ − 1366
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1367
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1368
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1369
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>_<span
+ − 1370
class=GramE>Connection.Open(</span>);<o:p></o:p></span></pre><pre
+ − 1371
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1372
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1373
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1374
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1375
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1376
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1377
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1378
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>SQLiteCommand cmd = _<span
+ − 1379
class=GramE>Connection.CreateCommand(</span>);<o:p></o:p></span></pre><pre
+ − 1380
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1381
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1382
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1383
lang=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><pre
+ − 1384
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1385
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1386
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1387
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 1388
mso-ansi-language:EN-US'>cmd.Parameters.Add(</span></span><span lang=EN-US
+ − 1389
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"@OrderId", DbType.Int32).Value = orderId;<o:p></o:p></span></pre><pre
+ − 1390
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1391
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1392
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1393
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1394
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1395
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1396
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1397
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>DataTable table = new <span
+ − 1398
class=GramE>DataTable(</span>);<o:p></o:p></span></pre><pre style='margin-top:
+ − 1399
3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;text-align:justify;
+ − 1400
line-height:110%;background:#EEEEEE;border:none;mso-border-alt:solid #CCCCCC .75pt;
+ − 1401
padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span lang=EN-US
+ − 1402
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1403
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1404
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1405
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1406
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 1407
mso-ansi-language:EN-US'>table.Columns.Add(</span></span><span lang=EN-US
+ − 1408
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"Id");<o:p></o:p></span></pre><pre
+ − 1409
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1410
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1411
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1412
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 1413
mso-ansi-language:EN-US'>table.Columns.Add(</span></span><span lang=EN-US
+ − 1414
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"OrderId");<o:p></o:p></span></pre><pre
+ − 1415
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1416
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1417
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1418
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 1419
mso-ansi-language:EN-US'>table.Columns.Add(</span></span><span lang=EN-US
+ − 1420
style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>"Article");<o:p></o:p></span></pre><pre
+ − 1421
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1422
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1423
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1424
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1425
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1426
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1427
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1428
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>SQLiteDataReader reader = <span
+ − 1429
class=GramE>cmd.ExecuteReader(</span>);<o:p></o:p></span></pre><pre
+ − 1430
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1431
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1432
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1433
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1434
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1435
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1436
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1437
class=GramE><span lang=EN-US style='font-size:7.5pt;line-height:110%;
+ − 1438
mso-ansi-language:EN-US'>while</span></span><span lang=EN-US style='font-size:
+ − 1439
7.5pt;line-height:110%;mso-ansi-language:EN-US'> (reader.Read())<o:p></o:p></span></pre><pre
+ − 1440
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1441
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1442
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1443
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>{<o:p></o:p></span></pre><pre
+ − 1444
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1445
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1446
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1447
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span>DataRow row = <span
+ − 1448
class=GramE>table.NewRow(</span>);<o:p></o:p></span></pre><pre
+ − 1449
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1450
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1451
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1452
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 1453
class=GramE>row[</span>"Id"] = reader.GetInt32(0);<o:p></o:p></span></pre><pre
+ − 1454
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1455
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1456
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1457
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 1458
class=GramE>row[</span>"OrderId"] = reader.GetInt32(1);<o:p></o:p></span></pre><pre
+ − 1459
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1460
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1461
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1462
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 1463
class=GramE>row[</span>"Article"] = reader.GetString(2);<o:p></o:p></span></pre><pre
+ − 1464
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1465
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1466
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1467
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><span style='mso-spacerun:yes'> </span><span
+ − 1468
class=GramE>table.Rows.Add(</span>row);<o:p></o:p></span></pre><pre
+ − 1469
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1470
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1471
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1472
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'>}<o:p></o:p></span></pre><pre
+ − 1473
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1474
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1475
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1476
lang=EN-US style='font-size:7.5pt;line-height:110%;mso-ansi-language:EN-US'><o:p> </o:p></span></pre><pre
+ − 1477
style='margin-top:3.4pt;margin-right:0cm;margin-bottom:3.4pt;margin-left:0cm;
+ − 1478
text-align:justify;line-height:110%;background:#EEEEEE;border:none;mso-border-alt:
+ − 1479
solid #CCCCCC .75pt;padding:0cm;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'><span
+ − 1480
lang=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>
+ − 1481
+ − 1482
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1483
+ − 1484
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>The
+ − 1485
SQLiteCommand instance contains a select statement that loads the orders with
+ − 1486
the specified OrderId. The result set of this query is then filled in a data
+ − 1487
table that is databinded to <span class=GramE>an</span> dataGridView that
+ − 1488
displays the result. An example application is provided in the form of
+ − 1489
SqlMobileTest project.<o:p></o:p></span></p>
+ − 1490
+ − 1491
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1492
+ − 1493
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1494
style='mso-ansi-language:EN-US'>Conclusion<o:p></o:p></span></b></p>
+ − 1495
+ − 1496
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>With this
+ − 1497
conversion of SQLite, it is now possible to create .NET applications with database
+ − 1498
support for the great family of Symbian S60 smartphones. With the upcoming release
+ − 1499
of version 9.4 the Symbian OS provides an implementation of SQLite but this
+ − 1500
version is not released yet and only new devices will get this database
+ − 1501
support. With this conversion all S60 3<sup>rd</sup> Edition devices will be able
+ − 1502
to use SQLite. Together with the Red Five Labs Net60 implementation of the .NET
+ − 1503
Compact Framework it is possible to run .NET applications on Symbian OS. Together
+ − 1504
with the ADO.NET provider for this SQLite implementation these applications can
+ − 1505
use database functionality like any other application on a personal computer.<o:p></o:p></span></p>
+ − 1506
+ − 1507
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1508
+ − 1509
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
+ − 1510
style='mso-ansi-language:EN-US'>Tools Used for this project<o:p></o:p></span></b></p>
+ − 1511
+ − 1512
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Microsoft
+ − 1513
Visual Studio 2005 together with the Carbide.vs Plugin (http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide/<span
+ − 1514
class=GramE>index.html )</span> were used in this project.<o:p></o:p></span></p>
+ − 1515
+ − 1516
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><span
+ − 1517
style='mso-spacerun:yes'> </span>Additionally the S60 SDK and the Symbian PIPS
+ − 1518
SDK are required to compile the project. With the Carbide plug in it is
+ − 1519
possible to develop native Symbian applications in the Visual Studio IDE and to
+ − 1520
debug on the S60 emulator. To convert a S60 project (f.e. a BLD or MMP file) to
+ − 1521
a Visual Studio project, the Import Wizard of the carbide plugin could be used.
+ − 1522
It is located under the File menu. The user only has to select the s60 project
+ − 1523
and to assign an S60 SDK (f.e. maintenance release or FP1/FP2). The rest of the
+ − 1524
transformation does the wizard. So it is easy to convert existing projects to
+ − 1525
use the carbide plugin.<o:p></o:p></span></p>
+ − 1526
+ − 1527
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1528
+ − 1529
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+ − 1530
+ − 1531
</div>
+ − 1532
+ − 1533
</body>
+ − 1534
+ − 1535
</html>