接下来就是一行行读column了。
因为column有多个,所以我们需要写循环语句 while(...)
循环语句的结束条件是什么呢,读到什么时候column就算读完了呢?
当然是要么文件结束,要么读到‘)’啦。
所以我们可以开头这样写
fscanf(fp,"%s",buffer);
while (!feof(fp) && strcmp(buffer,")")) {
while循环中每读到一次column就创建一个column对象。填充好。
而且column结构设计的时候我用链表结构。所以还要把每次创建的column对象连起来。
//接下去开始读column内容
Column * current = NULL;
fscanf(fp,"%s",buffer);
while (!feof(fp) && strcmp(buffer,")"))
{
//每次循环先创建一个column对象
Column * column = (Column *)malloc(sizeof(Column));
//清空column
memset(column, 0, sizeof(Column));
//因为column是链表结构,所以必有一下几句 1)保留住链表头 2)把链表连起来 3)当前的指针往后移一个
if (t.columns == NULL) t.columns = column;
if (current!=NULL) current->next = column;
current = current->next;
链表结构的创建一定要记住!1)保留住链表头 2)把链表连起来 3)当前的指针往后移一个
好了。到现在为止CREATE最复杂的部分实现了以后。接下来我们就轻松了。只要一个个内容读,读完了1保存在新创建的column中就可以了。
t.columnCount++;
//第一次读应该读到 column name
strcpy(column->name, buffer);
//第二次读应该读到 column type(column length)
fscanf(fp,"%s",buffer);
getColumnTypeLength(buffer, &column->type, &column->length)==0;
//第三次可能读到NULL; 可能读到; 这两种都代表着可以为空
fscanf(fp,"%s",buffer);
if (strcmp(buffer,";")==0 || strcmp(strupr(buffer),"null;")==0)
column->allowNull = 1;
//第三次读也可能读到NOT,代表着不能为空
else if (stricmp(buffer,"not")==0)
{
//第四次读应该读到null;
fscanf(fp,"%s",buffer);
if (stricmp(buffer,"null;")) return 0;
column->allowNull = 0;
}
这样一个column就都算完成了。继续往下读,完成循环
//继续读应该读到下一行内容了
fscanf(fp,"%s",buffer);
}
return 1;
分享到:
相关推荐
### C++ 实验项目:基于 C++ 实现的简易数据库系统 #### 项目概述 本项目旨在使用 C++ 开发一个简易的数据库系统,该系统能够执行基本的 CRUD(创建、读取、更新、删除)操作。通过此项目,读者不仅能够加深对 C++...
总结来说,实现“安卓数据库简易实现”需要以下步骤: 1. 创建SQLiteOpenHelper子类,定义数据库和表结构。 2. 实现数据库操作方法,如插入、查询、更新和删除。 3. 在需要的地方调用这些方法,如登录界面。 4. 考虑...
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需要...