标签:ali inux 语言 lin autoconf 管理数据 数据库应用 条件 关联
part1:sqlite嵌入式数据库移植
1、数据库系统构成:访问数据库应用-->管理数据库系统-->数据库存储(自上而下)
2、数据库中数据以表的形式而存在。表与表之间可能存在关联关系(SQL结构化查询语言,用于访问数据库中的数据)
3、数据库访问语言SQL
创建表 | creat table stu name varchar(10),number small(int) 表名 变量-类型 |
向表中插入数据 | insert into stu values(‘CC‘,1) 表名 name-number |
表中查询数据 | select * form stu |
表中删除数据 | delete form stu where 范围 |
4、数据库sqlite移植
step1:解压新建_install目录,且配置./configuer --host=arm-linux- --prefix=${PWD}/_install
step2:编译make、make install--->产生Makefile文件
step3:将产生的库函数全部复制到/rootfs/lib/目录下
5、数据库访问应用程序
step1:编译test_db.c文件
arm-linux-gcc test_db.c -I ./sqlite-autoconf-3070800/_install/include/ -L ./sqlite-autoconf-3070800/_install/lib/ -lsqlite3 -o test_db
step2:复制可执行文件test_db到根文件系统中
step3:在开发板上执行命令:
#test_db sql.db "create table stu (name varchar(10),number small(int) )";创建sql_db数据库文件
#test_db sql.db "insert into stu values ( ‘CC‘‘,1 )"; 向数据可中插入数据
#test_db sql.db "insert into stu values ( ‘HJH‘,2 )";
#test_db sql.db "select *from stu;" 提取表里信息
一个简单的数据库应用程序
#include <stdio.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int i; for(i=0; i<argc; i++) { //azColName[i]列名,argv[i]列的值 printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char **argv) { sqlite3 *db; char *zErrMsg = 0; int rc; if( argc!=3 ) { fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); } /*打开数据库*/ rc = sqlite3_open(argv[1], &db); if( rc ) { fprintf(stderr, "Can‘t open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); } /*执行sql语言*/ rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ) { fprintf(stderr, "SQL error: %s\n", zErrMsg); } /*关闭数据库*/ sqlite3_close(db); return 0; }
part2:账号管理子系统设计
数据库账号管理子系统,用于管理客户端账号,非允许客户禁止登录服务器。
流程:1、创建数据库文件sql.db(存储用于信息),存储与客户端目录下;
2、客户端程序内加入登录验证程序,查询sql_db信息表中是否匹配,错误exit(0)退出。
int login() { char username[10]; char passwd[10]; sqlite3* db; int success; char sql[50];//需要执行sql语句的字符串 //1、通知输入用户名和密码 printf("User name:"); scanf("%s", username); printf("Password:"); scanf("%s", passwd); //2、根据用户名,从数据库提取正确的密码 //从tb0表查询密码,where name=‘%s‘从用户名对应的位置查询密码 sprintf(sql, "select passwd from tb0 where name=‘%s‘;", username); sqlite3_open("sql.db", &db); /*a.打开数据库*/ // callback回调函数打印符合条件的密码 sqlite3_exec(db, sql, callback, 0, NULL); /*b.执行sql语言*/ sqlite3_close(db); /*c.关闭数据库*/ //3、比较用户名输入的密码和数据库提取出的密码,以决定是否登录 success = strcmp(passwd, passwd_d);//passwd用户输入的,passwd_d根据用户名在数据库中查询到的 return success; //成功返回0 }
编译:分别调用openssl加密传输文件,sqlite头文件,openssl和sqlite的库文件 -lssl -lcrypto -lsqlite3
在开发板上新建数据,运行客户端程序,./client 192.168.19.125,安装要求输入账号密码,成功则登录SSL传输
标签:ali inux 语言 lin autoconf 管理数据 数据库应用 条件 关联
原文地址:https://www.cnblogs.com/ubbdote/p/13432056.html