`
桔红糕
  • 浏览: 42704 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

简易内存数据库(六)CREATE

    博客分类:
  • CPP
F# 
阅读更多

前面CREATE完成。当中有一个细节我想你应该已经注意到了。

就是当读到 float(4)或者char(100) 时,我们知道这个字符串中需要保存2个内容。一个是column类型,一个是column长度。

我就用了getColumnTypeLength(buffer, &column->type, &column->length); 这个函数,希望把buffer中读到的这两个内容,分别保存到column->type和column->length中。

 

显而易见,我把解析这种字符串的事情交给了getColumnTypeLength这个函数来做。

这个函数第一个buffer是输入参数。

column->type和column->length是需要函数内部设置值的返回参数。

返回参数必须以传递地址的方式,才能够使函数内部的设置保存下来。

 

那这个函数究竟怎么实现呢?我觉得这是一个基本功。每个同学都应该自己会写,而且也有很多写法。只要能实现就可以。

下面是我的实现方式。当中会用到一个函数strncmp。他的用处是比较两个字串的特定长度。

strncmp(string,"float(",6) 就是想比较一下float(4)和float(的前6位是否相同

 

/*
 * 描述:float(4)或者char(100)把括号前后的内容分别保存
 * 参数:string -- 整体字符串
 * 参数:type -- 解析后返回的type(float/char)(返回)
 * 参数:length -- 解析后返回的长度(返回)
 * 返回:返回0说明创建失败。返回1则创建成功
 */
int getColumnTypeLength(char * string, DataType * type, int * length)
{
	char * floatHead = "float(";
	char * charHead = "char(";
	//如果是float打头的
	if (strncmp(string,floatHead,strlen(floatHead))==0)
	{
		*type = floatType;
		string = string+strlen(floatHead);
		*length = getLength(string);
		return 1;
	}
	else if (strncmp(string,charHead,strlen(charHead))==0)
	{
		*type = stringType;
		string = string+strlen(charHead);
		*length = getLength(string);
		return 1;
	}
	else
	{
		printf("文件格式有误\n");
		return 0;
	}
}

 

解析完类型后,我又用了getLength来解析长度。

 

比如说我们传递进来的字符串是float(4),则string一开始指向字符串的头地址,也就是指向f

string = string+strlen(floatHead)) 就是把string指针往后挪6位,这样string就指向了4。string指向的字符串就是’4)‘

getLength(string)就是让getLength这个函数解析‘4)’这个字符串得到4这个数值。

分享到:
评论

相关推荐

    C++ 实验项目:基于C++实现的简易数据库系统.pdf

    ### C++ 实验项目:基于 C++ 实现的简易数据库系统 #### 项目概述 本项目旨在使用 C++ 开发一个简易的数据库系统,该系统能够执行基本的 CRUD(创建、读取、更新、删除)操作。通过此项目,读者不仅能够加深对 C++...

    andriod数据库简易实现

    总结来说,实现“安卓数据库简易实现”需要以下步骤: 1. 创建SQLiteOpenHelper子类,定义数据库和表结构。 2. 实现数据库操作方法,如插入、查询、更新和删除。 3. 在需要的地方调用这些方法,如登录界面。 4. 考虑...

    数据库课设,期末课设

    10. **数据库性能调优**:这包括查询优化、存储调整、内存配置和硬件升级等多个方面,以确保数据库高效运行。 在这个简易数据库课设中,学生可能会接触到上述这些基础知识,并通过实际操作来加深理解。通过这个过程...

    NUAA CCST 2022年春数据库原理实验 学生信息管理系统 可高度复现简易C#代码

    《NUAA CCST 2022年春数据库原理实验:学生信息管理系统简易C#实现详解》 在信息技术领域,数据库管理和系统开发是至关重要的部分。本实验项目以NUAA(南京航空航天大学)计算机科学与技术(CCST)专业2022年春季...

    数据库实验报告

    在安装过程中,首先需要满足一定的硬件要求,例如最低CPU频率为600MHz,推荐1GHz或更高,内存至少为512MB(企业版、标准版、工作组版、开发版),简易版则为192MB。硬盘空间要求包括数据库引擎、数据文件、复制和...

    c语言实现简单数据库.zip

    在本项目中,"c语言实现简单数据库.zip" 提供了一个使用C语言编写的简易数据库管理系统。这个系统包含了几个核心的数据库操作功能,如SELECT、INSERT(插入后排序)、CREATE和DELETE,这些功能是任何数据库管理系统...

    学生管理系统java+mysql简易

    1. **创建(Create)**:使用INSERT语句向数据库添加新学生信息。 2. **读取(Read)**:使用SELECT语句查询学生信息,可以按姓名、学号等条件过滤。 3. **更新(Update)**:通过UPDATE语句修改已存在的学生信息...

    数据库初学资料(1)

    【数据库初学资料(1)】这篇资料主要涵盖了数据库的基础知识,包括数据库原理、DBMS的组成以及用户访问数据的过程。以下是对这些知识点的详细解释: 1. **数据库原理**: - 数据库是一个集中存储和管理数据的系统...

    数据库技术(SQLServer)习题与参考答案.doc

    - **硬件环境**:至少需要1GB内存,足够的硬盘空间用于存储数据库文件。 3. **SQL Server 2005 版本和服务组件** - **版本**:企业版、标准版、工作组版、开发版和简易版。 - **服务组件**: - **SQL Server ...

    数据库专业技术SQLServer习题与参考答案.doc

    - **硬件要求**:参见教材中的具体说明,通常包括最低内存、处理器速度、磁盘空间等。 - **软件环境**:操作系统兼容性,如 Windows Server 2003 或更高版本。 3. **SQL Server 2005 的版本与服务组件** - **...

    Android的简易备忘录

    总结来说,这个简易备忘录应用展示了Android开发的基本流程,包括UI设计、数据库操作、事件处理以及权限管理等核心知识点。开发者可以根据自己的需求扩展功能,例如添加搜索、分类、云同步等功能,以提高应用的实用...

    一个android上的sqlite简易使用程序

    5. **关闭资源**: 记得在完成数据库操作后关闭`Cursor`和`Database`对象,避免内存泄漏: ```java cursor.close(); db.close(); ``` 6. **事务处理**: 对于一组数据库操作,可以使用`beginTransaction()`, `...

    Android简单的增删查改源码

    在使用完Cursor后,一定要记得调用close()方法关闭游标,避免内存泄漏。 在实际项目中,为了提高代码的可维护性和可复用性,我们通常会封装一个数据库操作工具类,包含增删查改等静态方法,将SQL语句与业务逻辑解耦...

    DataRescue.IDA 简易教程

    **DataRescue.IDA 简易教程** DataRescue.IDA 是一款强大的逆向工程工具,它结合了数据恢复和反汇编的功能,广泛应用于软件安全分析、漏洞研究以及恶意代码检测等领域。本教程将深入浅出地介绍如何使用 DataRescue....

    简道sqlite3模块易语言源码

    7. 动态内存管理:在使用SQLite3时,需要注意内存管理,例如使用`sqlite3_free()`释放由SQLite3分配的内存。 8. 安全性:SQLite3支持多种安全特性,如文件权限控制、数据加密等,开发者可以根据需求选择启用。 ...

    网上考试系统 Pb

    总结,网上考试系统Pb是一个基于PowerBuilder和SQL的简易考试平台,它融合了数据库设计、SQL操作、PB的特性如数据窗口和事件驱动编程,以及用户界面设计等多个IT领域的知识。理解并掌握这些技术,对于开发类似的在线...

    NetBox本地服务器搭建

    2. 至少4GB内存,推荐8GB或以上,以便于运行NetBox和其依赖的服务。 3. 可用的硬盘空间,NetBox本身并不大,但需要存储网络配置数据,所以根据实际情况预留足够的空间。 4. 安装了Python 3.6+的环境,因为NetBox需要...

Global site tag (gtag.js) - Google Analytics