Linux软件编程---数据库

Linux软件编程---数据库_第1张图片

目录

一、数据库

1.1.概念

1.2.类型 

1.关系型数据库

2.非关系型数据库

1.3.SQL语句

二、数据库编程

2.1.安装sqlite3

 2.2.函数接口

1.sqlite3_open() --- 打开数据库

2. sqlite3_errmsg() --- 获得出错原因

3.sqlite3_exec ()--- 操作数据库表

4.sqlite3_close()--- 关闭数据库

2.3.实例

三、总结


一、数据库

1.1.概念

文件存放数据,掉电的情况下数据不会;

数据库存放的位置也是文件;

什么时候使用数据库呢?

当要存储和管理大量数据时,往往使用数据库,效率高;

1.2.类型 

1.关系型数据库

 1)Oracle

 2)DB2

3)MySql

4)sqlserver

5)sqlite

2.非关系型数据库

1)redis

1.3.SQL语句

create table 表名   --------  创建数据库表

insert into 表名 values (.....)------ 插入元素

update 表名 set 列 = “”     ---- 修改元素

select 列,., . from 表名   ----- 查询元素

delete from student where ..  ------- 删除某一行元素

drop table 表名 ----  删除表

注意查询是最复杂的  可以连接where条件查询,也可以联合其他表查询

联合查询

cross join ---  交叉连接

inner join --- 内连接

outer join --- 外连接

二、数据库编程

2.1.安装sqlite3

 sudo apt-get install libsqlite3-dev 
 

 2.2.函数接口

1.sqlite3_open() --- 打开数据库

        int sqlite3_open(
            const char *filename,   /* Database filename (UTF-8) */
            sqlite3 **ppDb          /* OUT: SQLite db handle */
        );

        功能:
            打开一个数据库文件
        参数:
            filename:数据库文件名称 
            ppDb:数据库句柄
        返回值:
            成功返回SQLITE_OK
            失败返回错误码

2. sqlite3_errmsg() --- 获得出错原因

const char *sqlite3_errmsg(sqlite3*);
        获得出错原因

3.sqlite3_exec ()--- 操作数据库表

         int sqlite3_exec(
            sqlite3*,                                  /* An open database */
            const char *sql,                           /* SQL to be evaluated */
            int (*callback)(void*,int,char**,char**),  /* Callback function */
            void *,                                    /* 1st argument to callback */
            char **errmsg                              /* Error msg written here */
          );
          功能:
            执行SQL语句
          参数:
            sqlite3*:数据库句柄
            sql:要执行的SQL语句字符串的首地址 
            callback:回调函数(只有在select语句时会使用,其余SQL语句只需传入NULL),对找到的数据要完成的操作
            void *:给回调函数的参数 
            char **:存放错误信息空间首地址
          返回值:
            成功返回SQLITE_OK 
            失败返回错误码 

4.sqlite3_close()--- 关闭数据库

 int sqlite3_close(sqlite3*);
          功能:
            关闭sqlite3数据库  

2.3.实例

创建数据库,并创建student表,插入数据,并查询打印

#include 
#include 
#include 
typedef struct student
{
    char name[32];
    char sex[8];
    double score;
} stu_t;

/*打印查寻到的数据*/
int callback(void *arg, int column, char **pcontext, char **ptitle)
{
    int i = 0;
   
    for (i = 0; i < column; i++)
    {
        printf("%s = %s\t", ptitle[i], pcontext[i]);
    }
     printf("\n");

    return 0;
}

int main(void)
{
    sqlite3 *db = NULL;
    char *perrmsg = NULL;
    char tmpbuff[1024] = {0};
    int ret = 0;
    int i = 0;

    stu_t s[3] = {
        {"张三","男",89},
        {"李四","男",99},
        {"王二","男",100},
    };

    /* 打开数据库文件 */
    ret = sqlite3_open("student.db", &db);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "fail to open:%s\n", sqlite3_errmsg(db));  
        return -1;
    }

    
    /* 创建表 */
    sprintf(tmpbuff, "%s", "create table if not exists student  (id integer primary key asc,name text,sex text,socre integer);");
    ret = sqlite3_exec(db, tmpbuff, NULL, NULL, &perrmsg);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "fail to create table:%s", perrmsg);  
        return -1;
    }

    /* 插入数据 */
    for (i = 0; i < 3; i++)
    {
        sprintf(tmpbuff, "insert into student values(NULL,\'%s\',\'%s\',%lf);",s[i].name,s[i].sex,s[i].score);
        ret = sqlite3_exec(db, tmpbuff, NULL, NULL, &perrmsg);
        if (ret != SQLITE_OK)
        {
            fprintf(stderr, "fail to create table:%s", perrmsg);  
            sqlite3_free(perrmsg);
            sqlite3_close(db);
            return -1;
        }
    }
    /* 查寻数据 */
    sprintf(tmpbuff, "select * from student;");
    ret = sqlite3_exec(db, tmpbuff, callback, NULL, &perrmsg);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "fail to create table:%s", perrmsg); 
        sqlite3_free(perrmsg);
        sqlite3_close(db); 
        return -1;
    }    
    
    sqlite3_close(db);
}

三、总结

        数据库中最难的操作还是,查询操作,查询按照很多不同条件查询,情况比较多,必须扎实掌握。 

你可能感兴趣的:(数据库)