数据库
a. 直接地址存储:没有文件系统的情况,采用直接地址存储(非常不方便,不容易扩充)
b. 文件:(数据量不大,数据规律性不强,而且需要方便读取,那就放到文件中) 用户名, 密码
c. 数据库 :(学生管理系统、库存系统)
大型数据库:(银行、电信、qq、百度、京东、阿里)
大型数据库: Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅
Oracle/sybase/DB2
IBM 的DB2是第一个具备网上功能的多媒体关系数据库管理系统, 支持包括Linux在内的一系列平台
中型数据库:
中型数据库 Server是微软开发的数据库产品,主要支持windows平台小型数据库 mySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,2008年被Sun公司收购。开放源码
sql server (微软)
mysql (甲骨文,开源)
小型数据库:
SQLite的源代码是C,其源代码完全开放。SQLite第一个Alpha版本诞生于2000年5月。 他是一个轻量级的嵌入式数据库。
SQLite对于其他数据库有什么优势:
- 不需要配置,不需要安装和管理 不需要一个单独的服务器进程或操作的系统(无服务器的)
一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上 - SQLite是非常小的,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB
- SQLite是一个自给自足的数据库,这也就意味着不需要任何外部的依赖 SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问
- SQLite支持SQL92(SQL2)标准的大多数查询语言的功能 SQLite使用ANSI-C编写的,并提供了简单和易于使用的API
- SQLite可在UINX(Linux,MaxOS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行
2.数据库中有哪些概念
数据库: 数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合
如:my.db 文件,就是一个数据库文件
数据表: 描述某一个事物的基本信息的表
如: 图书管理系统
学生信息表: 编号 姓名 性别 年龄 班级 爱好
图书信息表: 图书编号 书名 出版社 作者 分类
借阅表:
记录 : 表里面的一条信息
字段 : 列名
要求:
(1)表中的字段:name english linux chinese
(2)添加三名同学信息到表中。
(3)查找linux 成绩 高于 90 的学生信息。
(4)更新某个同学的成绩。
sqlite> create table stu_score(name varchar(20),english integer,linux integer);
sqlite> insert into stu_score values("小明",100,80);
sqlite> insert into stu_score values("小丽",90,91);
sqlite> insert into stu_score values("小红\",89,98);
sqlite> select *from stu_score;
小明|100|80
小丽|90|91
小红\|89|98
sqlite> select *from stu_score where linux>90;
小丽|90|91
小红\|89|98
sqlite> update stu_score set english=60 where name='小明';
sqlite> select *from stu_score;
小明|60|80
小丽|90|91
小红\|89|98
C语言中 数据库实现函数: libsqlite3.so
需要加头文件 #include
#include
#include
#include
int main()
{
sqlite3 *db=NULL;
if(sqlite3_open("stu.db",&db)!=0)
{
perror("sqlite3_open");
exit(-1);
}
return 0;
}
实例:
#include
#include
#include
int main()
{
sqlite3 *db=NULL;
if(sqlite3_open("stu.db",&db)!=0)
{
perror("sqlite3_open");
exit(-1);
}
char *errmsg=NULL;
char *sql="create table info(usrname varchar(20),passwd varchar(20))";
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=0)
{
exit(-1);
}
sqlite3_close(db);
return 0;
}
#include
#include
#include
int main()
{
sqlite3 *db=NULL;
if(sqlite3_open("stu.db",&db)!=0)
{
printf("sqlite3_errmsg:%s\n",sqlite3_errmsg(db));
exit(-1);
}
char *errmsg=NULL;
char *sql="create able info(usrname varchar(20),passwd varchar(20))";
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=0)
{
printf("sqlite3_errmsg:%s\n",sqlite3_errmsg(db));
}
sqlite3_close(db);
return 0;
}
实例:
#include
#include
#include
int main()
{
sqlite3 *db=NULL;
if(sqlite3_open("stu.db",&db)!=0)
{
printf("sqlite3_errmsg:%s\n",sqlite3_errmsg(db));
exit(-1);
}
char *sql="create table info(usrname varchar(20),passwd varchar(20))";
sqlite3_exec(db,sql,NULL,NULL,NULL);
sqlite3_exec(db,"insert into info values('linux','123')",NULL,NULL,NULL);
sqlite3_exec(db,"insert into info values('小明','1')",NULL,NULL,NULL);
sqlite3_exec(db,"insert into info values('大名','123456')",NULL,NULL,NULL);
sqlite3_close(db);
return 0;
}
实例:
#include
#include
int main()
{
sqlite3 *db=NULL;
char **result=NULL;
int row,col;
int i;
sqlite3_open("stu.db",&db);
char *sql="select *from info";
sqlite3_get_table(db,sql,&result,&row,&col,NULL);
for(i=0;i<(row+1)*col;i++)
{
printf("%8s",result[i]);
if(i%2!=0)
{
putchar('\n');
}
}
sqlite3_free_table(result);
sqlite3_close(db);
return 0;
}
键盘输入用户名和密码 程序去数据库中查询 用户名和密码是否正确 如果正确 输出”登录成功!” 错误则输出”登录失败”
create table stu_info(name varchar(20),passwd integer)
1.数据库中存入用户名和密码
2.键盘输入用户名和密码
char usrname[40];
int password;
scanf(“%s%d”,usrname,&password);
3.去库中匹配 用户名密码是否正确
char sql[100]="\0";
sprintf(sql,"select *from stu_info where name='%s' and passwd=%d",usrname,password);
sqlite3_get_table(db,sql,result,row,col,NULL);
4.打印输出
#include
#include
#include
#include
sqlite3 *db=NULL;
void input_data()
{
char buf[100]="\0";
char usr[40]="\0";
int password;
char sql[100]="\0";
puts("请输入用户名和密码( 输入'end'结束)");
while(1)
{
scanf("%s",usr);
if(strcmp(usr,"end")==0)
{
break;
}
scanf("%d",&password);
sprintf(sql,"insert into usr_info values('%s',%d)",usr,password);
sqlite3_exec(db,sql,NULL,NULL,NULL);
bzero(buf,sizeof(buf));
}
}
void log_in()
{
char buf[100]="\0";
char usr[40]="\0";
int password,row,col;
char sql[100]="\0";
char **result=NULL;
puts("请输入要登录的用户名和密码:");
scanf("%s%d",usr,&password);
sprintf(sql,"select *from usr_info where name='%s' and passwd=%d",usr,password);
sqlite3_get_table(db,sql,&result,&row,&col,NULL);
if(0==row)
puts("登录失败!");
else
puts("登录成功!");
sqlite3_free_table(result);
}
int main()
{
char *errmsg=NULL;
const char*p=NULL;
int ret = sqlite3_open("kitty.db",&db);
if(ret!=0)
{
p = sqlite3_errmsg(db);
puts(p);
exit(-1);
}
char sql[100]="create table usr_info(name varchar(40),passwd integer)";
sqlite3_exec(db,sql,NULL,NULL,&errmsg);
input_data();
log_in();
sqlite3_close(db);
return 0;
}
Original: https://blog.csdn.net/weixin_44890864/article/details/121686564
Author: A~我y
Title: 网络编程 第五天 数据库&项目
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816195/
转载文章受原作者版权保护。转载请注明原作者出处!