前面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这个数值。
分享到:
相关推荐
总结来说,实现“安卓数据库简易实现”需要以下步骤: 1. 创建SQLiteOpenHelper子类,定义数据库和表结构。 2. 实现数据库操作方法,如插入、查询、更新和删除。 3. 在需要的地方调用这些方法,如登录界面。 4. 考虑...
### C++ 实验项目:基于 C++ 实现的简易数据库系统 #### 项目概述 本项目旨在使用 C++ 开发一个简易的数据库系统,该系统能够执行基本的 CRUD(创建、读取、更新、删除)操作。通过此项目,读者不仅能够加深对 C++...
10. **数据库性能调优**:这包括查询优化、存储调整、内存配置和硬件升级等多个方面,以确保数据库高效运行。 在这个简易数据库课设中,学生可能会接触到上述这些基础知识,并通过实际操作来加深理解。通过这个过程...
《NUAA CCST 2022年春数据库原理实验:学生信息管理系统简易C#实现详解》 在信息技术领域,数据库管理和系统开发是至关重要的部分。本实验项目以NUAA(南京航空航天大学)计算机科学与技术(CCST)专业2022年春季...
在安装过程中,首先需要满足一定的硬件要求,例如最低CPU频率为600MHz,推荐1GHz或更高,内存至少为512MB(企业版、标准版、工作组版、开发版),简易版则为192MB。硬盘空间要求包括数据库引擎、数据文件、复制和...
在本项目中,"c语言实现简单数据库.zip" 提供了一个使用C语言编写的简易数据库管理系统。这个系统包含了几个核心的数据库操作功能,如SELECT、INSERT(插入后排序)、CREATE和DELETE,这些功能是任何数据库管理系统...
1. **创建(Create)**:使用INSERT语句向数据库添加新学生信息。 2. **读取(Read)**:使用SELECT语句查询学生信息,可以按姓名、学号等条件过滤。 3. **更新(Update)**:通过UPDATE语句修改已存在的学生信息...
【数据库初学资料(1)】这篇资料主要涵盖了数据库的基础知识,包括数据库原理、DBMS的组成以及用户访问数据的过程。以下是对这些知识点的详细解释: 1. **数据库原理**: - 数据库是一个集中存储和管理数据的系统...
- **硬件环境**:至少需要1GB内存,足够的硬盘空间用于存储数据库文件。 3. **SQL Server 2005 版本和服务组件** - **版本**:企业版、标准版、工作组版、开发版和简易版。 - **服务组件**: - **SQL Server ...
- **硬件要求**:参见教材中的具体说明,通常包括最低内存、处理器速度、磁盘空间等。 - **软件环境**:操作系统兼容性,如 Windows Server 2003 或更高版本。 3. **SQL Server 2005 的版本与服务组件** - **...
总结来说,这个简易备忘录应用展示了Android开发的基本流程,包括UI设计、数据库操作、事件处理以及权限管理等核心知识点。开发者可以根据自己的需求扩展功能,例如添加搜索、分类、云同步等功能,以提高应用的实用...
5. **关闭资源**: 记得在完成数据库操作后关闭`Cursor`和`Database`对象,避免内存泄漏: ```java cursor.close(); db.close(); ``` 6. **事务处理**: 对于一组数据库操作,可以使用`beginTransaction()`, `...
在使用完Cursor后,一定要记得调用close()方法关闭游标,避免内存泄漏。 在实际项目中,为了提高代码的可维护性和可复用性,我们通常会封装一个数据库操作工具类,包含增删查改等静态方法,将SQL语句与业务逻辑解耦...
**DataRescue.IDA 简易教程** DataRescue.IDA 是一款强大的逆向工程工具,它结合了数据恢复和反汇编的功能,广泛应用于软件安全分析、漏洞研究以及恶意代码检测等领域。本教程将深入浅出地介绍如何使用 DataRescue....
7. 动态内存管理:在使用SQLite3时,需要注意内存管理,例如使用`sqlite3_free()`释放由SQLite3分配的内存。 8. 安全性:SQLite3支持多种安全特性,如文件权限控制、数据加密等,开发者可以根据需求选择启用。 ...
总结,网上考试系统Pb是一个基于PowerBuilder和SQL的简易考试平台,它融合了数据库设计、SQL操作、PB的特性如数据窗口和事件驱动编程,以及用户界面设计等多个IT领域的知识。理解并掌握这些技术,对于开发类似的在线...
2. 至少4GB内存,推荐8GB或以上,以便于运行NetBox和其依赖的服务。 3. 可用的硬盘空间,NetBox本身并不大,但需要存储网络配置数据,所以根据实际情况预留足够的空间。 4. 安装了Python 3.6+的环境,因为NetBox需要...