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> |
|