千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 怎样建立一个数据库,然后利用C语言调用数据库的数据来进行运算得到运算结果?

怎样建立一个数据库,然后利用C语言调用数据库的数据来进行运算得到运算结果?

来源:千锋教育
发布人:xqq
时间: 2023-10-13 12:52:29 1697172749

一、建立一个数据库利用C语言调用数据库的数据来进行运算得到运算结果

你直接使用创建命令(CREATE DATABASE ..)即可,然后利用提供的C语言的API函数访问数据库即可,你预算可以借助SELECT在数据库中完成,也可以选择SELECT读出数据到内存中,借助C语言预算完成,没啥技术难度而言

数据库简单实现:

该程序在windows环境,dev c++编译器下正常编译运行,linux下需要自行编写strnicmp()与itoa()。

由于时间的限制,在块存储结构以及数据字典表的存储上进行了简化,若之后要实现同步等操作的实现将会出现错误,还有较多的冗余代码,没有抽取封装成单独的函数。SELECT的实现只支持单表查询,WHERE语句只支持一个过滤表达式。其中有部分归并排序和外排序的代码没有完成,但是SELECT中有块内排序的函数。

该程序是数据库的简单实现,包含INSERT插入操作,CREATE建表操作,SELECT查询操作,在数据结构设计时考虑了DELETE删除操作,所以在Item结构中增加了bool型变量IsDelete标记是否已经删除,因为在postgresql中的DELETE是假删除,所以DELETE操作很容易实现,我也在显示的函数里加入了IsDeleted的判断,有需要自行独立添加相关函数即可。自定义表(ID为10000以上,文件名即为ID)在文件存储中是以块(页)形式存储的,大小为8K,元组的长度是变长的,字符串也是变长存储。

该程序实现的主要难度在于数据结构的设计,指针操作,内存中数据存储理解以及文件操作。

涉及的核心函数主要有:

内存操作 malloc()、free()、memcpy()

文件操作 fopen()、fclose()、fread()、fseek()、fwrite()

总体难度不大。

延伸阅读:

二、Django 是什么

Django 是一个高级的 Python 网络框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django 负责处理网站开发中麻烦的部分,因此你可以专注于编写应用程序,而无需重新开发。 它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

Django 可以使你的应用具有以下优点:

完备性

Django 遵循“功能完备”的理念,提供开发人员可能想要“开箱即用”的几乎所有功能。因为你需要的一切都是一个”产品“的一部分,它们都可以无缝结合在一起,遵循一致性设计原则,并且具有广泛和最新的文档。

通用性

Django 可以(并已经)用于构建几乎任何类型的网站—从内容管理系统和维基,到社交网络和新闻网站。它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括 HTML,Rss 源,JSON,XML 等)的内容。你正在阅读的网站就是基于 Django。

在内部,尽管它为几乎所有可能需要的功能(例如几个流行的数据库,模版引擎等)提供了选择,但是如果需要,它也可以扩展到使用其他组件。

安全性

Django 帮助开发人员通过提供一个被设计为“做正确的事情”来自动保护网站的框架来避免许多常见的安全错误。例如,Django 提供了一种安全的方式来管理用户账户和密码,避免了常见的错误,比如将 session 放在 cookie 中这种易受攻击的做法(取而代之的是 cookies 只包含一个密钥,实际数据存储在数据库中)或直接存储密码而不是密码哈希。

密码哈希是通过密码散列函数发送密码而创建的固定长度值。Django 能通过运行哈希函数来检查输入的密码 – 就是 – 将输出的哈希值与存储的哈希值进行比较是否正确。然而由于功能的“单向”性质,即时存储的哈希值受到威胁,攻击者也难以解决原始密码。(但其实有彩虹表 – 译者观点)

默认情况下,Django 可以防范许多漏洞,包括 SQL 注入,跨站点脚本,跨站点请求伪造和点击劫持。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
MySQL日均10万数据永久保存实现高可用可以采用什么方案?

一、MySQL日均10万数据永久保存实现高可用可以采用的方案1、数据库集群使用MySQL数据库集群来实现高可用性和负载均衡。可以使用主从复制(Maste...详情>>

2023-10-13 14:47:04
类似博客这样的图文混排内容在数据库中是以什么形式保存的呢?

一、图文混排内容在数据库中的保存形式在数据库中保存类似博客这样的图文混排内容,可以使用以下几种形式:1、文本字段(Text Field)可以使用...详情>>

2023-10-13 14:30:09
Canal将MySQL数据同步到Elasticsearch怎么保证数据一致性?

一、Canal将MySQL数据同步到Elasticsearch保证数据一致性的方法1、事务同步确保Canal捕获到的MySQL数据是基于事务的。Canal会将整个事务的操作...详情>>

2023-10-13 14:27:06
怎样在数据库中实现一对多的关系怎样存储图片和视频?

一、怎样在数据库中实现一对多的关系怎样存储图片和视频1.图片和视频文件 不要存放在数据库中,而应该利用文件系统存放,数据库中只存放读取他...详情>>

2023-10-13 14:22:08
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?

一、如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁没听说有列锁的机制,主流的方式就是行锁。我觉得你这种需求可以归到“...详情>>

2023-10-13 14:18:11