7272|15

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

清全部家产,求大侠们帮助,如何能够将SQLite应用到wince上 [复制链接]

如题,我想应用qt写的程序跑在wince平台上,要关联SQLite数据库,能不能给个小例子,只要能能够实现qt访问SQLite数据库,在wince平台上实现就可以了,我的邮箱是kym2005@126.com
此帖出自WindowsCE论坛

最新回复

标记下  详情 回复 发表于 2010-3-22 21:23
点赞 关注
 

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在线等待呀,先谢谢大家帮忙了
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
Qt Sample不能编译通过么?
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用楼主 kym2005 的回复:
如题,我想应用qt写的程序跑在wince平台上,要关联SQLite数据库,能不能给个小例子,只要能能够实现qt访问SQLite数据库,在wince平台上实现就可以了,我的邮箱是kym2005@126.com

没有例子。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
int InsertNewMsgAndReturnID(LPCTSTR title,LPCTSTR time,int status,int audioFrames,int audioTime,int videoFrames,int videoTime,int startAudioTime,int startVideoTime)
{
        //判断是否超过10条数据,如果超过,则删除一条
        CppSQLite3DB db;
        int ID;
        try
        {       
                //打开数据库
                db.open(LEAVE_MSG_DATABASE_FILE);
                //判断是否打开成功
                if(!db.mpDB)
                {
                        // 打开失败,判断数据库文件是否存在,不存在则创建
                        if(CreateDatabase())
                        {
                                // 再次打开
                                db.open(LEAVE_MSG_DATABASE_FILE);
                                // 打开失败
                                if(!db.mpDB)
                                {
                                        throw 0;
                                }
                        }else
                        {
                                throw 0;
                        }
                       
                }
                //表不存在,新建表
                if(!db.tableExists(L"Message"))
                {
                        //建立表格
                        db.execDML(L"create table Message(ID int, title char(50),time char(50),status int,audioFrames int,audioTime int,videoFrames int,videoTime int,startAudioTime int,startVideoTime int);");
                }
               
                //查询数据
                CppSQLite3Query q = db.execQuery(L"select COUNT(*) from Message;");
                if(!q.eof())
                {
                        int count = q.getIntField(0);
                        if(count >= 10)
                        {
                                //需要删除一条,首先查找最旧的已读的留言
                                int deleteID = 0;
                                q = db.execQuery(L"select MIN(ID) from Message WHERE status = 1 ;");
                                if(!q.eof())
                                {
                                        deleteID = q.getIntField(0);
                                }else
                                {
                                        q = db.execQuery(L"select MIN(ID) from Message;");
                                        if(!q.eof())
                                        {
                                                deleteID = q.getIntField(0);
                                        }
                                }
                                //如果找到,删除之
                                if(deleteID)
                                {
                                        CString delSql = L"DELETE FROM Message WHERE ID = ";
                                        CString appendSql;
                                        appendSql.Format(L"%d",deleteID);
                                        delSql += appendSql;
                                        db.execDML(delSql);
                                        //删除对应的音视频文件
                                        CString delFile = AUDIO_FILE_PATH;
                                        appendSql.Format(L"%d.wave",deleteID);
                                        delFile += appendSql;
                                        DeleteFile(delFile);

                                        delFile = VIDEO_FILE_PATH;
                                        appendSql.Format(L"%d.yuv",deleteID);
                                        delFile += appendSql;
                                        DeleteFile(delFile);
                                }
                        }
                }

                //获取最大的ID
                int maxID = 0;
                q = db.execQuery(L"select MAX(ID) from Message;");
                if(!q.eof())
                {
                        maxID = q.getIntField(0);
                }

                //插入新的记录
                CString insertSql = L"insert into Message values(";
                CString appendSql;
                appendSql.Format(L"%d,",maxID+1);
                insertSql += appendSql;
                appendSql.Format(L"'%s',",title);
                insertSql += appendSql;
                appendSql.Format(L"'%s',",time);
                insertSql += appendSql;
                appendSql.Format(L"%d,",status);
                insertSql += appendSql;
                appendSql.Format(L"%d,",audioFrames);
                insertSql += appendSql;
                appendSql.Format(L"%d,",audioTime);
                insertSql += appendSql;
                appendSql.Format(L"%d,",videoFrames);
                insertSql += appendSql;
                appendSql.Format(L"%d,",videoTime);
                insertSql += appendSql;
                appendSql.Format(L"%d,",startAudioTime);
                insertSql += appendSql;
                appendSql.Format(L"%d",startVideoTime);
                insertSql += appendSql;
                appendSql.Format(L"%s",")");
                insertSql += appendSql;
                db.execDML(insertSql);
               
                ID = maxID+1 ;
        }catch(...)
        {
                ID = 0;
        }
        //关闭数据库
        db.close();
        return ID;
}


增删改查全在里面了
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
  我们公司的机密代码,我冒着生命危险给你贴出来了。。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
  其中有些删除音视频文件的部分,你无视就好了,这是和我们业务相关的。CppSQLite3DB 这个类网上有下的,它也只是包装了sqllite的API,加了一些东西。比用原始的API方便了一点
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 qwqwqw408 的回复:
? 我们公司的机密代码,我冒着生命危险给你贴出来了。。

好人!!
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
MARK,   学习啦
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
呵呵。mark。看看冒着生命危险贴出来的code。。。。
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
先谢谢大家了,帖子我暂时还不能结,因为我还没有弄出来,希望大家原谅,我把一个小测试代码写出来,
为什么不能运行呢,我已经成功交叉编译了,
#include
#include
#include
#include

int main(int argc, char *argv[])
{        
        QApplication app(argc, argv);
        QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("dd.db");
        if ( !db.open())
        {
                QMessageBox::critical(NULL, QObject::tr("Collection"), QObject::tr("error"));
                return 0;
        }
        return app.exec();
}
结果出现了下面的错误,
The file'src' cannot be opened,Either it is not signed with a trusted certificate,or one of its components cannot be found. if the problem perisists,try reinstalling or restoring this file.
是不是.dll不对呀,我按照网上的用vs2005编译了SQLite,生成了。dll,是wince5.0的,但是.exe为什么不能运行呢
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
我自己顶上去,..........
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
.exe不能运行我知道为什么了,是少了个qtsql4.dll文件,但是为什么连接不上SQLite呢
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
问题解决了,看来还是要靠自己找了,非常感谢下面的一位仁兄写的。
http://www.cnblogs.com/windwithlife/archive/2009/08/13/1545504.html
问题就是在Windows缺省编译的QT SDK是支持SQLite数据库驱动的,但在Window Mobile上要使用-qt-sql-sqlite配置项,不然release 版也不会报错,但使用时,数据库功能不能正常使用
所以在编译时configure -platform win32-msvc2005 -xplatform wincewm60professional-msvc2005 -qt-sql-sqlite
要加上-qt-sql-sqlite
此帖出自WindowsCE论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

16
 
标记下
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表