网络编程 第五天 数据库&项目

数据库

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球