c++怎么高效率ssh2实现连接数据库数据库中表格多种连接

c++代码中怎么最快速获取sqlite数据库某表中总条数,并且效率最高??
[问题点数:20分,结帖人lixian9999]
c++代码中怎么最快速获取sqlite数据库某表中总条数,并且效率最高??
[问题点数:20分,结帖人lixian9999]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年7月 其他数据库开发大版内专家分月排行榜第二2014年3月 其他数据库开发大版内专家分月排行榜第二2013年7月 其他数据库开发大版内专家分月排行榜第二2013年4月 其他数据库开发大版内专家分月排行榜第二2012年3月 其他数据库开发大版内专家分月排行榜第二2011年8月 其他数据库开发大版内专家分月排行榜第二2011年7月 其他数据库开发大版内专家分月排行榜第二2009年11月 其他数据库开发大版内专家分月排行榜第二2009年7月 其他数据库开发大版内专家分月排行榜第二2009年6月 其他数据库开发大版内专家分月排行榜第二2009年5月 其他数据库开发大版内专家分月排行榜第二2009年4月 其他数据库开发大版内专家分月排行榜第二2009年3月 其他数据库开发大版内专家分月排行榜第二2009年1月 其他数据库开发大版内专家分月排行榜第二2008年10月 其他数据库开发大版内专家分月排行榜第二2008年8月 其他数据库开发大版内专家分月排行榜第二2003年9月 Delphi大版内专家分月排行榜第二
2014年4月 其他数据库开发大版内专家分月排行榜第三2013年10月 其他数据库开发大版内专家分月排行榜第三2013年9月 其他数据库开发大版内专家分月排行榜第三2013年6月 其他数据库开发大版内专家分月排行榜第三2012年12月 其他数据库开发大版内专家分月排行榜第三2012年11月 其他数据库开发大版内专家分月排行榜第三2012年10月 其他数据库开发大版内专家分月排行榜第三2012年9月 其他数据库开发大版内专家分月排行榜第三2012年1月 其他数据库开发大版内专家分月排行榜第三2011年11月 其他数据库开发大版内专家分月排行榜第三2011年9月 其他数据库开发大版内专家分月排行榜第三2011年6月 其他数据库开发大版内专家分月排行榜第三2011年5月 其他数据库开发大版内专家分月排行榜第三2011年4月 其他数据库开发大版内专家分月排行榜第三2011年3月 其他数据库开发大版内专家分月排行榜第三2010年11月 其他数据库开发大版内专家分月排行榜第三2010年4月 其他数据库开发大版内专家分月排行榜第三2010年1月 其他数据库开发大版内专家分月排行榜第三2009年12月 其他数据库开发大版内专家分月排行榜第三2009年2月 其他数据库开发大版内专家分月排行榜第三2008年7月 其他数据库开发大版内专家分月排行榜第三2008年6月 其他数据库开发大版内专家分月排行榜第三2008年1月 其他数据库开发大版内专家分月排行榜第三2007年12月 其他数据库开发大版内专家分月排行榜第三2003年12月 Delphi大版内专家分月排行榜第三2003年10月 Delphi大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|如何在C++中建立一个顺序表
转载 &更新时间:日 10:03:54 & 作者:
在使用顺序表之前,首先创建一个空的顺序表,也就是初始化顺序表。这里,在程序中只需设置顺序表的结点数量ListLen为0即可。这样,后面需要添加的数据元素将从顺序表的第一个位置存储
准备数据 代码如下:#define MAXLEN 100&//定义顺序表的最大长度struct DATA{&char key[10];&//结点的关键字 &char name[20];&};struct&SLType&//定义顺序表结构 {&DATA ListData[MAXLEN+1];//保存顺序表的结构数组&int ListL&&&//顺序表已存结点的数量 }; 定义了顺序表的最大长度MAXLEN、顺序表数据元素的类型DATA以及顺序表的数据结构SLType。
在数据结构SLType中,Listen为顺序表已存结点的数量,也就是当前顺序表的长度,ListData是一个结构数组,用来存放各个数据结点。
我们认为该顺序表是一个班级学生的记录。其中,key为学号,name为学生的名称,age为年龄。
因为数组都是从下标0开始的,为了使用方便,我们从下标1开始记录数据结点,下标0的位置不可用。
初始化顺序表
在使用顺序表之前,首先创建一个空的顺序表,也就是初始化顺序表。这里,在程序中只需设置顺序表的结点数量ListLen为0即可。这样,后面需要添加的数据元素将从顺序表的第一个位置存储。示例代码: 代码如下:void SLInit(SLType * SL)&//初始化顺序表{&SL-&Listlen=0; } 计算线性表的长度
计算线性表的长度也就是计算线性表中结点的个数,由于我们在SLType中定义了ListLen来表示结点的数量,所以我们只需要获得这个变量的值即可。 代码如下:int SLLenght(SLType *SL){&return(SL-&ListLen);&//返回顺序表的元素数量 } 插入结点
插入节点就是在线性表L的第i个位置上插入一个新的结点,使其后的结点编号依次加1。这时,插入一个新节点之后,线性表L的长度将变为n+1。插入结点操作的难点在于随后的每个结点数据都要向后移动,计算机比较大,示例代码如下: 代码如下:int SLInsert(SLType *SL,int n,DATA data){&&if(SL-&ListLen&=MAXLEN)&//顺序表结点数量已超过最大数量&{&&cout&&"顺序表已满,不能插入结点!"&&&&return 0;&&&//返回0表示插入不成功 &} &if(n&1||n&SL-&ListLen)&//插入结点的序号不合法 &{&&cout&&"插入序号错误!"&&&&return 0;&}&for(i=SL-&ListLi&=n;i--)&//将顺序表中的数据向后移动&{&&SL-&ListData[i+1]=SL-&ListData[i];&}&SL-&ListData[n]=&SL-&ListLen++;&return 1; }在程序中首先判断顺序表结点数量时候已超过最大数量,以及插入点的序号是否正确。前面条件都瞒住以后,便将顺序表中的数据向后移动,同时插入结点,并更新结点数量ListLen。
追加结点就是在顺序表的尾部插入结点,因此不必进行大量数据的移动,代码实现与插入结点相比就要简单的多。 代码如下:int SLAdd(SLType * SL,DATA data){&if(SL-&ListLen&=MAXLEN)&{&&cout&&"顺序表已满,不能再添加结点了!"&&&&return 0;&} &SL-&ListData[++SL-&ListLen]=&return 1;}删除结点
删除结点就是删除线性表L中的第i个结点,使得其后的所有节点编号依次减1.这是,删除一个结点之后,线性表L的长度将变为n-1。删除结点和插入结点类似,都需要进行大量数据的移动。 代码如下:int SLDelete(SLType *SL,int n)&//删除顺序表中的数据元素{&&if(n&1||n&SL-&ListLen)&//删除结点的序号不合法 &{&&cout&&"删除序号错误!"&&&&return 0;&}&for(i=n;i&SL-&ListLi++)//将顺序表中的数据向前移动 &{&&SL-&ListData[i]=SL-&ListData[i+1]; &} &SL-&ListLen--;&&&//顺序表元素数量减1 &return 1;&&&&//成功删除返回1 } 查找结点
查找节点就是在线性表L中查找值为x的结点,并返回该节点在线性表L中的位置。如果在线性表中没有找到值为x的结点,则返回一个错误标志。根据x的类型不同,查找结点可以分为:
按照序号查找结点
对于一个顺序表,序号就是数据元素在数组中的位置,也就是数组的下标标号。按照序号查找结点是顺序表查找结点最常用的方法,这是因为顺序表的存储本身就是一个数组,示例代码如下: 代码如下:DATA * SLFindByNum(SLType *SL,int n)//根据呼号返回数据元素{&if(n&1||n&SL-&ListLen)&&&//查询结点的序号不合法 &{&&cout&&"查询序号错误!"&&&&return 0;&}&return &(SL-&ListData[n]); } 按照关键字查找结点
关键字可以是数据元素中的任意一项。这里以key关键字为例进行介绍,例如,可以通过key查找学生的信息。示例代码如下: 代码如下:int SLFindByCont(SLType * SL,char *key)//按关键字查询结点 {&&for(i=1;i&=SL-&ListLi++)&{&&if(strcmp(SL-&ListData[i].key,key)==0)//如果找到结点 &&{&&&&&}&}&return 0;&&&&&&//在整个表中都没有找到,返回0 } 显示所有的结点
示例代码如下: 代码如下:void SLALL(SLType *SL){&&for(i=1;i&SL-&ListLi++)&{&&cout&&"key:"&&SL-&ListData[i].key&&&&cout&&"name:"&&SL-&ListData[i].name&&&&cout&&"age:"&&SL-&ListData[i].age&&&&cout&&"============================="&& &}} 顺序表操作完整示例:
基本上就是把上面的函数放到一块,集中展示了一下功能,代码有些长,请耐心阅读^.^ 代码如下:#include&iostream&#include&string&#define MAXLEN 100&//定义顺序表的最大长度/**************顺序表的定义部分*****************/ struct DATA{&&//结点的关键字 &string&&};struct&SLType&//定义顺序表结构 {&DATA ListData[MAXLEN+1];//保存顺序表的结构数组&int ListL&&&//顺序表已存结点的数量 }; /************顺序表的初始化函数*****************/ void SLInit(SLType * SL)&//初始化顺序表{&SL-&ListLen=0; } /***********计算线性表的长度*******************/int SLLenght(SLType *SL){&return(SL-&ListLen);&//返回顺序表的元素数量 } /*********插入结点*******************************/int SLInsert(SLType *SL,int n,DATA data){&&if(SL-&ListLen&=MAXLEN)&//顺序表结点数量已超过最大数量&{&&cout&&"顺序表已满,不能插入结点!"&&&&return 0;&&&//返回0表示插入不成功 &} &if(n&1||n&SL-&ListLen)&//插入结点的序号不合法 &{&&cout&&"插入序号错误!"&&&&return 0;&}&for(i=SL-&ListLi&=n;i--)&//将顺序表中的数据向后移动&{&&SL-&ListData[i+1]=SL-&ListData[i];&}&SL-&ListData[n]=&SL-&ListLen++;&return 1; &&&&//成功插入,返回1 }/***********************追加结点*************************/ int SLAdd(SLType * SL,DATA data){&if(SL-&ListLen&=MAXLEN)&{&&cout&&"顺序表已满,不能再添加结点了!"&&&&return 0;&} &SL-&ListData[++SL-&ListLen]=&return 1;}/***********************删除结点*************************/ int SLDelete(SLType *SL,int n)&//删除顺序表中的数据元素{&&if(n&1||n&SL-&ListLen)&//删除结点的序号不合法 &{&&cout&&"删除序号错误!"&&&&return 0;&}&for(i=n;i&SL-&ListLi++)//将顺序表中的数据向前移动 &{&&SL-&ListData[i]=SL-&ListData[i+1]; &} &SL-&ListLen--;&&&//顺序表元素数量减1 &return 1;&&&&//成功删除返回1 } /*******************按照序号查找结点********************/DATA * SLFindByNum(SLType *SL,int n)//根据序号返回数据元素{&if(n&1||n&SL-&ListLen)&&&//查询结点的序号不合法 &{&&cout&&"查询序号错误!"&&&&return 0;&}&return &(SL-&ListData[n]); } /*******************按照关键字查找结点********************/DATA *SLFindByCont(SLType * SL,string name)//按关键字查询结点 {&&for(i=1;i&=SL-&ListLi++)&{&&if(SL-&ListData[i].name==name)//如果找到结点 &&{&&&return &(SL-&ListData[i]);&&}&}&return 0;&&&&&&//在整个表中都没有找到,返回0 } /*******************显示所有的结点********************/void SLALL(SLType *SL){&&for(i=1;i&=SL-&ListLi++)&{&&cout&&"key:"&&SL-&ListData[i].key&&",name:"&&SL-&ListData[i].name&&",age:"&&SL-&ListData[i].age&&&}} int main(){&&SLType SL;&//定义顺序表变量 &DATA&//定义结点保存数据类型变量 &DATA *//定义指向结点的指针变量&&cout&&"顺序表操作演示:"&&&SLInit(&SL);//初始化顺序表&do&{&//循环添加结点数据 &&cout&&"请输入要添加的结点(学号 姓名 年龄):";&&cin&&data.key&&data.name&&data.&&if(data.age)&&//若年龄不为0&&{&&&if(!SLAdd(&SL,data))//若添加结点失败 &&&{&&&&&&&//退出循环 &&&}&&}else&&{&&&&&} &}while(1);&cout&&"顺序表中的结点顺序为:" &&&SLALL(&SL);&&&&//显示所有的结点&cout&&"请输入要取出的结点序号:";&cin&&i;&pdata=SLFindByNum(&SL,i);//按序号查找结点&if(pdata)&{&&cout&&"第"&&i&&"个结点为:key:"&&pdata-&key&&",name:"&&pdata-&name&&",age:"&&pdata-&age&&&} &cout&&"请输入要查找的姓名:";&cin&&&pdata=SLFindByCont(&SL,name);&if(pdata)&{&&cout&&"key:"&&pdata-&key&&",name:"&&pdata-&name&&",age:"&&pdata-&age&&&} &cout&&"请输入您要删除的结点的序号:";&cin&&i;&if(SLDelete(&SL,i))&{&&cout&&"数据删除成功"&&&&SLALL(&SL);&&}&cout&&"请输入您要插入的结点的序号:";&cin&&i;&cout&&"请输入第"&&i&&"号结点的key,name,以及age"&&&cin&&data.key&&data.name&&data.&if(SLInsert(&SL,i,data))&{&&cout&&"插入数据成功"&&&&SLALL(&SL);&&} &return 0;}运行界面:
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具如何设计一个高效率批量插入数据的接口,sql语句又如何实现
[问题点数:50分,结帖人chouchou2007]
如何设计一个高效率批量插入数据的接口,sql语句又如何实现
[问题点数:50分,结帖人chouchou2007]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2008年2月 MS-SQL Server大版内专家分月排行榜第二2007年7月 MS-SQL Server大版内专家分月排行榜第二2002年3月 MS-SQL Server大版内专家分月排行榜第二2002年1月 MS-SQL Server大版内专家分月排行榜第二2001年12月 MS-SQL Server大版内专家分月排行榜第二
2013年2月 MS-SQL Server大版内专家分月排行榜第三
2008年2月 MS-SQL Server大版内专家分月排行榜第二2007年7月 MS-SQL Server大版内专家分月排行榜第二2002年3月 MS-SQL Server大版内专家分月排行榜第二2002年1月 MS-SQL Server大版内专家分月排行榜第二2001年12月 MS-SQL Server大版内专家分月排行榜第二
2013年2月 MS-SQL Server大版内专家分月排行榜第三
2008年2月 MS-SQL Server大版内专家分月排行榜第二2007年7月 MS-SQL Server大版内专家分月排行榜第二2002年3月 MS-SQL Server大版内专家分月排行榜第二2002年1月 MS-SQL Server大版内专家分月排行榜第二2001年12月 MS-SQL Server大版内专家分月排行榜第二
2013年2月 MS-SQL Server大版内专家分月排行榜第三
匿名用户不能发表回复!| 上传我的文档
 下载
 收藏
粉丝量:17
该文档贡献者很忙,什么也没留下。
 下载此文档
数据统计分析报表系统设计与实现
下载积分:1700
内容提示:数据统计分析报表系统设计与实现
文档格式:PDF|
浏览次数:655|
上传日期: 11:39:38|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1700 积分
下载此文档
该用户还上传了这些文档
数据统计分析报表系统设计与实现
关注微信公众号当前位置: →
→ c++代码中如何最快速获取sqlite数据库某表中总条数,并且效率最高
c++代码中如何最快速获取sqlite数据库某表中总条数,并且效率最高
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: c++代码中怎么最快速获取sqlite数据库某表中总条数,并且效率最高??c++代码中怎么最快速获取sqlite数据库某表中总条数,并且...
"c++代码中如何最快速获取sqlite数据库某表中总条数,并且效率最高"::
c++代码中怎么最快速获取sqlite某表中总条数,并且效率最高??c++代码中怎么最快速获取sqlite某表中总条数,并且效率最高??
我们项目使用开源的sqlite3.c,cppsqlite3.cpp中函数来对创建sqlite表。
现在,我需要在往一张表循环写入数据之前,首先获取当前表中已存在的所有数据条数。
条件时,效率比较高。
创建表方式以及表结构如下:
&&&&&&&&&cppsqlite3db&m_
&&&&&&&&&std::string&sql&=&"create&table&";
&&&&&&&&&sql&+=&tablename_service();
sql&+=&"(id&integer&primary&key&autoincrement,"
&&&&&&&&&&&&&&&&"&sevname&text&not&null,"
&&&&&&&&&&&&&&&&"&sevitem&text&not&null,"
&&&&&&&&&&&&&&&&"&sevrecordval&text&not&null,"
&&&&&&&&&&&&&&&&"&sevcurval&text&not&null,"
&&&&&&&&&&&&&&&&"&date&timestamp&not&null);";
&&&&&&&&&m_db.execdml(&sql.c_str()&);
目前我的思路是执行一个select*语句,然后获取结果集。
&&&//构造sql
&&&std::string&sql&=&"select&*&from&";
&&&sql&+=&tablename_service();&
&&&sql&+=&"&where&id&not&";
&&&cppsqlite3table&t&=&m_db.gettable(&sql.c_str()&);
&&&__int64&nsum&=&(__int64)t.numrows();
请问大家,还有其他比较好的方式吗?多谢大家。
------解决方案--------------------没有,count(*),除非id是连续没有缺失------解决方案--------------------std::string&sql&=&"select&count(*)&from&";
然后直接取出结果得数。 搜索此文相关文章:某表中总条数,并且效率最高此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
c++代码中如何最快速获取sqlite数据库某表中总条数,并且效率最高_其他数据库相关文章
其他数据库_总排行榜
其他数据库_最新
其他数据库_月排行榜
其他数据库_周排行榜
其他数据库_日排行榜

我要回帖

更多关于 数据库连接池实现 的文章

 

随机推荐