﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-吐泡泡的龙-文章分类-embedded-Linux</title><link>http://www.blogjava.net/lancelotzx/category/48005.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 09 Mar 2011 08:12:03 GMT</lastBuildDate><pubDate>Wed, 09 Mar 2011 08:12:03 GMT</pubDate><ttl>60</ttl><item><title>Reborn-开始嵌入式数据库开发 -- 使用sqlite建立嵌入式Web系统1</title><link>http://www.blogjava.net/lancelotzx/articles/345936.html</link><dc:creator>泡泡龙龙</dc:creator><author>泡泡龙龙</author><pubDate>Tue, 08 Mar 2011 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/lancelotzx/articles/345936.html</guid><wfw:comment>http://www.blogjava.net/lancelotzx/comments/345936.html</wfw:comment><comments>http://www.blogjava.net/lancelotzx/articles/345936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lancelotzx/comments/commentRss/345936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lancelotzx/services/trackbacks/345936.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;由于本系统落于某单板系统上，与嵌入式软件有复杂的调用和复用逻辑。从简单入手，<br />
<font face="#ce_temp_font#">硬件系统为PPC单板&#215;N，底层功能已经完成。目标是一个可控的Web管理系统。<br />
&nbsp;&nbsp;&nbsp;&nbsp;数据库建立为在montavista的虚拟文件系统中，创建一个xx.db文件，然后在板子上通过<br />
sqlite命令行直接建表。这部分直接省略了，没有存储过程，没有表间关系，尽量简单点。<br />
&nbsp;&nbsp; 服务器端可使用的容器很多，这边不一一列举，反正开源。做好makefile直接移植到mt-linux。<br />
&nbsp;&nbsp;&nbsp; 数据库的设计思路如下：<br />
&nbsp;&nbsp;&nbsp; 用户认证、数据读取、数据保存。 这三个模块够了，数据是啥米啊？先别管。数据读取是<br />
指从单板的应用层直接先保存数据到db，前端web页面再从db读取。数据保存是指前端web保存<br />
数据到db，应用层侦测到数据变化后，通过任务存放变化数据到寄存器、全局变量。<br />
<br />
&nbsp;&nbsp; 前端页面采用Html-cgi转化为C代码，通过cross-complie工具生成执行文件cgi，scp至单盘的工作目录。<br />
&nbsp;&nbsp; 嵌入式服务器的配置部分需要把默认路径指向工作目录，这样输入<a href="http://192.168.1.1">http://192.168.1.1</a>（伪，IP自己定好）<br />
这样的东东时，直接调用cgi，webserver始动，怎么动我就不管了。<br />
&nbsp;&nbsp; 前端页面之数据读取--核心代码--如下 <br />
--一小段Sqlite接口调用--<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">sqlite3&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">db</span><span style="color: #000000">=</span><span style="color: #000000">NULL;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">zErrMsg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;rc;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">**</span><span style="color: #000000">azResult;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nrow&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;ncolumn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />rc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sqlite3_open(</span><span style="color: #000000">"</span><span style="color: #000000">/xx.db</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">db);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">打开指定的数据库文件,如果不存在将创建一个同名的数据库文件</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #008000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;rc&nbsp;)<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_165_281_Open_Image" onclick="this.style.display='none'; Codehighlighter1_165_281_Open_Text.style.display='none'; Codehighlighter1_165_281_Closed_Image.style.display='inline'; Codehighlighter1_165_281_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_165_281_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_165_281_Closed_Text.style.display='none'; Codehighlighter1_165_281_Open_Image.style.display='inline'; Codehighlighter1_165_281_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" />&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_165_281_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_165_281_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Can't&nbsp;open&nbsp;database:&nbsp;%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;sqlite3_errmsg(db));<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlite3_close(db);<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;sql&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">SELECT&nbsp;*&nbsp;FROM&nbsp;table1&nbsp;where&nbsp;id&nbsp;=&nbsp;1&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />sqlite3_get_table(&nbsp;db&nbsp;,&nbsp;sql&nbsp;,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">azResult&nbsp;,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">nrow&nbsp;,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">ncolumn&nbsp;,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">zErrMsg&nbsp;);</span></div>
<br />
这种代码在docin上找sqlite使用文档吧，一般都是这样，这种封装的接口有利有弊，先用着吧。<br />
现在从web页面取一段数据应该没问题了。</font>
<img src ="http://www.blogjava.net/lancelotzx/aggbug/345936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lancelotzx/" target="_blank">泡泡龙龙</a> 2011-03-08 14:30 <a href="http://www.blogjava.net/lancelotzx/articles/345936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>