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

简易内存数据库(五)CREATE

    博客分类:
  • CPP
阅读更多

接下来就是一行行读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;

 

分享到:
评论

相关推荐

    andriod数据库简易实现

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

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

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

    数据库课设,期末课设

    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