社区
C++ Builder
帖子详情
如何在文件中实现类似数据库的功能
amfer
2006-07-29 10:42:15
比如以下结构:
姓名,性别,年龄...
张三,男,22
李四,男,25
我首先如何把它存为二进制文件,文件读入内存后如何对它进行增加、删除、查找、保存等和数据库类似的操作。
也就是自己写一个简单的数据库系统,查询速度越快越好...
...全文
200
12
打赏
收藏
如何在文件中实现类似数据库的功能
比如以下结构: 姓名,性别,年龄... 张三,男,22 李四,男,25 我首先如何把它存为二进制文件,文件读入内存后如何对它进行增加、删除、查找、保存等和数据库类似的操作。 也就是自己写一个简单的数据库系统,查询速度越快越好...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
amfer
2006-07-31
打赏
举报
回复
遍历是可行的,但是效率低啊
___NULL
2006-07-31
打赏
举报
回复
那简单嘛,记住起始点,全部遍历一次,稍微修改上面的查询代码即可
___NULL
2006-07-31
打赏
举报
回复
我在前面已经说过:“数据量不太大可以,如果查询太多,你还是用数据库软件得了”。
amfer
2006-07-30
打赏
举报
回复
这不是遍历所有节点吗?而且找到一个就返回,我查找的可能有多个结果
___NULL
2006-07-30
打赏
举报
回复
struct sURL_Control // 创建一个链表
{
sURL_Control* Next;
sURL_Control* Previous;
char Location;
sHTTP_INFO Http_Info;
};
sURL_Control URL_Start,URL_End,*URL_Node;
bool TURL_Manager::AppendPreconcertedURL(char* URL_Address,sHTTP_INFO NewHTTP_Info,bool FromLoadFile) // 添加信息
//bool TURL_Manager::AppendPreconcertedURL(char* URL_Address,sHTTP_INFO NewHTTP_Info)
{
if(FindNode(URL_Address)||FindNode(NewHTTP_Info.URL))
return false;
sURL_Control *NewNode=(sURL_Control*)malloc(sizeof(sURL_Control));
NewNode->Location=Local_Midway;
if(URL_Address==NULL) // 非来自拖动的添加
{
NewNode->Http_Info=NewHTTP_Info;
}
else // 拖动的添加
{
NewNode->Http_Info=MainForm->LocalOption; // Must be first
strcpy(NewNode->Http_Info.URL,URL_Address);
}
if(URL_Node->Location==Local_Start||URL_Node->Location==Local_Midway||FromLoadFile==true)
{
AppendNodeToNext(URL_Node,NewNode);
URL_Node=URL_Node->Next;
}
else
{
AppendNodeToPrevious(URL_Node,NewNode);
}
Count++;
AppendNodeToListView(NewNode->Http_Info);
return true;
}
void TURL_Manager::SaveToFile() // 保存信息
{
URL_Node=URL_Start.Next;
int Handle;
if((Handle=open((MainForm->ExecPach+"Job.sav").c_str(), O_CREAT | O_TRUNC | O_RDWR | O_BINARY, S_IWRITE))==-1)
{
//fprintf(stderr,"Error writing file ListEntry.Dat\n");
}
else
{
while(URL_Node->Location!=Local_End)
{
int size_of(sizeof(struct sHTTP_INFO));
write(Handle,&URL_Node->Http_Info,size_of);
URL_Node=URL_Node->Next;
}
}
close(Handle);
}
void TURL_Manager::LoadFormFile() // 读取信息
{
sHTTP_INFO nNode;
int Handle;
if((Handle=open((MainForm->ExecPach+"Job.sav").c_str(),O_RDONLY|O_BINARY))==-1)
{
//fprintf(stderr,"Error opening file Whcmk.Dat\n");
}
else
{
int size_of(sizeof(struct sHTTP_INFO));
while(read(Handle,&nNode,size_of))
{
AppendPreconcertedURL(NULL,nNode,true);
}
}
close(Handle);
}
amfer
2006-07-30
打赏
举报
回复
小弟没有这方面经验,不知道如何下手,有没有简单例子?谢谢
flowercity
2006-07-30
打赏
举报
回复
定义结构体
___NULL
2006-07-30
打赏
举报
回复
// 这是一段查找的代码
bool TURL_Manager::FindNode(char* URLAddress)
{
if(URLAddress==NULL)
return false;
sURL_Control* BackupNodePoint=URL_Node; // 为了还原指针,先纪录当前指针
URL_Node=URL_Start.Next;
while(URL_Node->Location!=Local_End)
{
if(strcmpi(URL_Node->Http_Info.URL,URLAddress)==0)
{
return true;
}
URL_Node=URL_Node->Next;
}
URL_Node=BackupNodePoint;
return false;
}
//---------------------------------------------------------------------------
___NULL
2006-07-30
打赏
举报
回复
// 链表的前后访问,数据量不太大可以,如果查询太多,你还是用数据库软件得了
void TURL_Manager::AppendNodeToNext(sURL_Control* Node,sURL_Control* NewNode)
{
NewNode->Next=Node->Next;
NewNode->Previous=Node;
Node->Next->Previous=NewNode;
Node->Next=NewNode;
}
//---------------------------------------------------------------------------
void TURL_Manager::AppendNodeToPrevious(sURL_Control* Node,sURL_Control* NewNode)
{
NewNode->Next=Node;
NewNode->Previous=Node->Previous;
Node->Previous->Next=NewNode;
Node->Previous=NewNode;
}
//---------------------------------------------------------------------------
圆圆木公
2006-07-30
打赏
举报
回复
定义一个结构体,然后规定每个结构体一共多少字节,(结构体内部每个占多少字节,实际数据不够就用空填满),然后换行,这样就比较容易的查找了,后面都是读文件,写文件
redcony
2006-07-30
打赏
举报
回复
定义一些数据类,就是每张表的一条记录作为一个对象
然后将这些对象保存起来就好了,需要实现:数据库类/表/字段/记录
amfer
2006-07-30
打赏
举报
回复
写入和读取是明白了,可是如何查找或者排序呢?比如查找“张三”或者年龄为22的行,还有对某一字段进行排序?
oracle 19c
数据库
基础和日常管理
Oracle 19c
数据库
基础与日常管理 通过本课程使学员掌握在Linux环境下Oracle 19c
数据库
的基础知识和日常管理。 课程主要包括以下主要内容: 1.
数据库
的启动和关闭 2.连接CDB和PDB
数据库
3.PDB
数据库
的管理 4.命令行...
简单的
文件
管理系统---
数据库
设计
SSM简单的
文件
管理系统1—
数据库
设计 应一友请求,现手撸一简单
文件
管理系统 一、项目主要
功能
1、
类似
云盘,用户可以在网盘
中
新建多层
文件
夹,并可以上传
文件
、下载
文件
、删除
文件
、删除
文件
夹 2、提供
文件
分类
功能
二、数据表设计 这里采用MySQL
数据库
为了
实现
功能
,我们需要六个数据表:用户信息、
文件
夹信息、
文件
信息、
文件
类型、
文件
浏览记录和
文件
下载记录
数据库
图: MYSQL
数据库
脚本: ...
Javaweb--通过网页
实现
对
数据库
的增删查改
文章目录Javaweb--通过网页
实现
对
数据库
的增删查改1、
功能
需求2、技术选型2、最终效果图3、
数据库
准备4、前端开发5、后端开发 Javaweb–通过网页
实现
对
数据库
的增删查改 通常在写一些后台管理系统的时候,一定会有关于数据表格的增删查改的
功能
实现
。最近也是闲来无事,做了这个小案例,希望能帮到有写这方面需求的朋友们。 1、
功能
需求 这次以单个的员工数据表为例,
实现
以下
功能
需求: 1、能够正常从
数据库
中
读取相应数据。 2、设置分页,能够通过点击页码,进行数据更新,同时支持输入页码更新数据
基于SSM框架
实现
文件
上传并插入
数据库
大学刚毕业,进入公司之后,师傅要求在已有的项目上增加Excel表格导入数据的
功能
,借此机会将遇到的问题做一个简单的总结。在
实现
该
功能
时先对
实现
思路进行梳理。1、获取Excel数据2、对获取到的数据进行分析3、如何将数据插入
数据库
4、如何校验之后插入
数据库
,出现异常以什么样的形式反馈给用户以上是
实现
的基本思路(菜鸟一枚,如有不对请给予指导,谢谢)1、由于每个用户使用的Excel版本不一样,所以需要对...
主流内存
数据库
功能
特性和性能比较
内存
数据库
从范型上可以分为关系型内存
数据库
和键值型内存
数据库
。在实际应用
中
内存
数据库
主要是配合oracle或mysql等大型关系
数据库
使用,关注性能,作用
类似
于缓存,并不注重数据完整性和数据一致性。基于键值型的内存
数据库
比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存
数据库
使用更多。本文首先比较FastDB、Memcached和Redis主流内存
数据库
的
功能
特性,再从性能上比较...
C++ Builder
13,824
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章