81 lines
2.6 KiB
C
81 lines
2.6 KiB
C
#include "sqlite3.h"
|
|
#include <stdio.h>
|
|
#include <cjson/cJSON.h>
|
|
|
|
int main(int argc, char const *argv[])
|
|
{
|
|
// 连接到 SQLite 数据库
|
|
sqlite3 *db; // 声明 sqlite3 类型变量,即声明一个数据库对象
|
|
char *zErrMsg = 0; // 用于存储错误信息
|
|
int rc; // 用于存储函数返回值
|
|
|
|
rc = sqlite3_open("../sql_base/green_house.db", &db); // 打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
|
|
if (rc)
|
|
{
|
|
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
|
|
sqlite3_close(db);
|
|
return 1;
|
|
}
|
|
fprintf(stderr, "好 Opened database successfully\n");
|
|
|
|
// 获取前端传递的 JSON 数据
|
|
char request_data[128] = "";
|
|
fgets(request_data, 128, stdin); // 从标准输入中读取一行数据
|
|
|
|
// 解析 JSON 数据
|
|
cJSON *json_buf = cJSON_parse(request_data); // 解析 JSON 数据
|
|
if (json_buf == NULL)
|
|
{
|
|
fprintf(stderr, "Error parsing JSON data\n");
|
|
sqlite3_close(db);
|
|
return 1;
|
|
}
|
|
|
|
// 获取用户名和密码
|
|
cJSON *user = cJSON_GetObjectItemCaseSensitive(json_buf, "name");
|
|
cJSON *password = cJSON_GetObjectItemCaseSensitive(json_buf, "password");
|
|
|
|
if (user == NULL || password == NULL || !cJSON_IsString(user) || !cJSON_IsString(password))
|
|
{
|
|
fprintf(stderr, "Error getting username and/or password from JSON data\n");
|
|
cJSON_Delete(json_buf);
|
|
sqlite3_close(db);
|
|
return 1;
|
|
}
|
|
|
|
// 拿到用户名和密码
|
|
char *username_from_frontend = user->valuestring;
|
|
char *password_from_frontend = password->valuestring;
|
|
|
|
// 构建查询语句
|
|
char query_sql[128] = "";
|
|
sprintf(query_sql, "select * from login_users where username='%s' and password='%s'", username_from_frontend, password_from_frontend); // 构建查询语句
|
|
|
|
// 执行查询语句
|
|
rc = sqlite3_exec(db, query_sql, 0, 0, &zErrMsg); // 执行查询语句
|
|
if (rc != SQLITE_OK)
|
|
{
|
|
fprintf(stderr, "SQL error: %s\n", zErrMsg);
|
|
sqlite3_free(zErrMsg);
|
|
cJSON_Delete(json_buf);
|
|
sqlite3_close(db);
|
|
return 1;
|
|
}
|
|
|
|
// 构建 JSON 数据
|
|
cJSON *result_json = cJSON_CreateObject();
|
|
cJSON_AddItemToObject(result_json, "result", cJSON_CreateString("success"));
|
|
cJSON_AddItemToObject(result_json, "username", cJSON_CreateString(username_from_frontend));
|
|
|
|
// 打印 JSON 数据
|
|
char *result_json_str = cJSON_Print(result_json);
|
|
printf("%s\n", result_json_str);
|
|
|
|
// 释放资源
|
|
cJSON_Delete(json_buf);
|
|
cJSON_Delete(result_json);
|
|
sqlite3_close(db);
|
|
|
|
return 0;
|
|
}
|