当前位置:网站首页>C language and the creation and use of database
C language and the creation and use of database
2022-06-25 22:52:00 【Game programming】
c Creation and use of language and database
data.h The header file
/********************************************************************************************** * :|x]. ?ObU: +jfl ?Zdr' '"I>>iI"' * n$$${ [email protected]$$k; n$$$Mi [B$$$c "-xZ*%$$$$$%*pX+ * >8$$k` j$$$C^ ]$$$$$Q. `k$$$$8l ~Y#$$%kQznnuY0qhk| * j$$$n {@$$0' .q$$$$$B< ($$$$$$/ 'uB$$p{: * 'm$$B+ +&$$b, [email protected]$$B$$$z ;#$$8%$$Z. +$$$M: * !&$$b^ !*$$#! C$$$\k$$M: [email protected]}X$$8! ,w$$$bc|}-~<iI". * f$$$x :k$$&+ _B$$p./$$$x /$$$u [email protected]$$x '[[email protected]$$$$$$$%oOr> * 'w$$%~ ^w$$B} `[email protected] "h$$Wl _8$$O' 'p$$o" ^:!><+](n0#[email protected]> * >8$$b^ 'L$$$\ x$$$C )$$$C Io$$a; ($$$t `[#$$*: * /$$$X.c$$$x <8$$&l [email protected]\w$$%+ "a$$#; ,]]" p$$$> * [email protected]$$$Y. .O$$$n >8$$$$$$t \$$$J 0$$*\" '!(p$$$u. * "d$$$$$Q' >B$$%i r$$$$$L. ^[email protected]{ _b$$$&qJvnnncCq#$$$&Q- * lh$$$Y' [$$$U `[email protected]^ {@$$a^ .+jQk&@[email protected]&aOn[: * :\r] '{x)^ .+}> ?UJ). ^:l>>>l:^. * * *********************************************************************************************//* Main program data processing header file *//* Online user structure */struct ONLINE_USER{ int fd; //-1 int flage; // registed or not char name[32]; char passwd[32];};/* Add a user *//* After the client sends the registration request , The server side registers user information into the database */int db_add_user(char name[], char passwd[]);/* Determine whether a user name is registered *//* function : Determine whether a user name is registered Return value : Return with name index, Otherwise return to -1 */int db_user_if_reg(char *name);/* Determine whether the user name and password are correct */int db_user_pwd_corrct(char *name, char *passwd);/* Database initialization */int database_init();/* Close the database */void database_close();data.c Implementation file
/* Main program data processing source file */#include <stdio.h>#include <sqlite3.h>#include <time.h>#include <sys/types.h>#include <unistd.h>/********************************************************************************************** * :|x]. ?ObU: +jfl ?Zdr' '"I>>iI"' * n$$${ [email protected]$$k; n$$$Mi [B$$$c "-xZ*%$$$$$%*pX+ * >8$$k` j$$$C^ ]$$$$$Q. `k$$$$8l ~Y#$$%kQznnuY0qhk| * j$$$n {@$$0' .q$$$$$B< ($$$$$$/ 'uB$$p{: * 'm$$B+ +&$$b, [email protected]$$B$$$z ;#$$8%$$Z. +$$$M: * !&$$b^ !*$$#! C$$$\k$$M: [email protected]}X$$8! ,w$$$bc|}-~<iI". * f$$$x :k$$&+ _B$$p./$$$x /$$$u [email protected]$$x '[[email protected]$$$$$$$%oOr> * 'w$$%~ ^w$$B} `[email protected] "h$$Wl _8$$O' 'p$$o" ^:!><+](n0#[email protected]> * >8$$b^ 'L$$$\ x$$$C )$$$C Io$$a; ($$$t `[#$$*: * /$$$X.c$$$x <8$$&l [email protected]\w$$%+ "a$$#; ,]]" p$$$> * [email protected]$$$Y. .O$$$n >8$$$$$$t \$$$J 0$$*\" '!(p$$$u. * "d$$$$$Q' >B$$%i r$$$$$L. ^[email protected]{ _b$$$&qJvnnncCq#$$$&Q- * lh$$$Y' [$$$U `[email protected]^ {@$$a^ .+jQk&@[email protected]&aOn[: * :\r] '{x)^ .+}> ?UJ). ^:l>>>l:^. * *********************************************************************************************/#include <sys/wait.h>#include <string.h>#include <stdlib.h>#include <signal.h>#include <pthread.h>#include "data.h"#define DATABASE_NAME "user.db"#define TABLE_USER "user"pthread_mutex_t db_mutex;sqlite3 *db; // database /* Add a user *//* After the client sends the registration request , The server side registers user information into the database */int db_add_user(char name[], char passwd[]){ char *errmsg; char sqlstr[1024] = {0}; if ((name == NULL) || (passwd == NULL)) { printf("Invalid name or password entered.\r\n"); return -1; } if ((strlen(name) > 32) || (strlen(passwd) > 32)) { printf("The entered name or password is too long.\r\n"); return -1; } sprintf(sqlstr, "insert into %s values('%s', '%s',-1, 1,0)", TABLE_USER, name, passwd); if (sqlite3_exec(db, sqlstr, NULL, NULL, &errmsg) != 0) { printf("Database query error: %s\r\n", sqlite3_errmsg(db)); } else { //printf("User added successfully.\r\n"); } //printf("\r\n"); return 1;}/* Determine whether a user name is registered *//* function : Determine whether a user name is registered Return value : Return with name index, Otherwise return to -1 */int db_user_if_reg(char *name){ int state = -1; char **result, *errmsg; int nrow, ncolumn, i, j, index; char sqlstr[1024] = {0}; sprintf(sqlstr, "select regist from %s where name='%s'", TABLE_USER, name); if (sqlite3_get_table(db, sqlstr, &result, &nrow, &ncolumn, &errmsg) != 0) { printf("Database query error: %s\r\n", errmsg); sqlite3_free(errmsg); } index = ncolumn; if (nrow > 0) { // Find the user with the specified name in the database ( data ), At least one piece of data state = 1; } else { // No user with the specified name was found in the database ( data ) state = -1; } sqlite3_free_table(result); return state;}/* Determine whether the user name and password are correct */int db_user_pwd_corrct(char *name, char *passwd){ int state = -1; char **result, *errmsg; int nrow, ncolumn, i, j, index; char sqlstr[1024] = {0}; sprintf(sqlstr, "select * from %s where name='%s' and passwd='%s'", TABLE_USER, name, passwd); /* function : perform SQL operation Parameters : db: Database handle sql:SQL sentence resultp: Used for pointing sql Pointer to the execution result nrow: The number of records that satisfy the condition ncolumn: Number of fields per record errmsg: The address of the error message pointer Return value : Successfully returns 0, Failure return error code */ if (sqlite3_get_table(db, sqlstr, &result, &nrow, &ncolumn, &errmsg) != 0) { printf("Database query error: %s\r\n", errmsg); sqlite3_free(errmsg); return -1; } index = ncolumn; if (nrow > 0) { // Find the user with the specified name and password in the database ( data ) state = 1; } else { // The user with the specified name and password was not found in the database ( data ) state = -1; } sqlite3_free_table(result); return state;}/* Database initialization */int database_init(){ int n; int ret; char *errmsg; char sql[] = "CREATE TABLE IF NOT EXISTS user(name INT PRIMARY KEY NOT NULL,passwd TEXT NOT NULL,fd INT NOT NULL,regist INT NOT NULL,keygen INT);"; pthread_mutex_init(&db_mutex, NULL); if (sqlite3_open(DATABASE_NAME, &db) < 0) { printf("Failed to open sqlite3: %s\r\n", sqlite3_errmsg(db)); return -1; } /* Use the callback function to perform SQL sentence */ ret = sqlite3_exec(db, sql, NULL, 0, &errmsg); if (ret != SQLITE_OK) { fprintf(stderr, "Database query error: %s\r\n", errmsg); sqlite3_free(errmsg); } else { fprintf(stdout, "The database initialized successfully.\r\n"); } return 0;}/* Close the database */void database_close(){ sqlite3_close(db);}author : Try to be strong &
Game programming , A game development favorite ~
If the picture is not displayed for a long time , Please use Chrome Kernel browser .
边栏推荐
- 哪些PHP开源作品值得关注
- Sqlmap learning (sqli labs as an example)
- Factorymethod factory method
- Nacos source code analysis 01 code structure
- Dio encapsulated by the flutter network request (cookie management, adding interceptors, downloading files, exception handling, canceling requests, etc.)
- Why absolute positioning overlaps
- How to open a futures account safely at present? Which futures companies are more reliable?
- China coated abrasive tools industry market depth analysis and development strategy consulting report 2022-2028
- 2022-2028 global open source cloud storage industry research and trend analysis report
- 2022-2028 global proton exchange membrane hydrogen electrolyzer industry survey and trend analysis report
猜你喜欢
![Intimacy - [comfortable exit] - final communication to reduce injury](/img/ab/c02d3b4213e1706e379d26073cbf07.jpg)
Intimacy - [comfortable exit] - final communication to reduce injury

民航局:到 2025 年我国将初步建成安全、智慧、高效和绿色的航空物流体系

CVPR2022教程 | 马里兰大学《机器学习遥感处理:农业与粮食安全》教程

Fujilai pharmaceutical has passed the registration: the annual revenue is nearly 500million yuan. Xiangyun once illegally traded foreign exchange

2022-2028 global proton exchange membrane hydrogen electrolyzer industry survey and trend analysis report

记|一次exists关键字的学习记录

2022-2028 global open source cloud storage industry research and trend analysis report

Another breakthrough! Alibaba cloud enters the Gartner cloud AI developer service Challenger quadrant
![[intensive lecture] 2022 PHP intermediate and advanced interview questions (II)](/img/50/c9572beaa035d5e6e78a57fcd1302c.jpg)
[intensive lecture] 2022 PHP intermediate and advanced interview questions (II)

Tiger DAO VC产品正式上线,Seektiger生态的有力补充
随机推荐
NARI radar's IPO meeting: it plans to raise nearly 1billion yuan. Bao Xiaojun and his wife are Canadians
Créer le premier site Web avec idea
聊聊Adapter模式
Record the learning record of the exists keyword once
What should it personnel over 35 years old do if they are laid off by the company one day?
[WPF] XAML code skills that can be directly used for converting CAD engineering drawings to WPF
2022-2028 global cloud based remote browser isolation industry research and trend analysis report
Programmer weekly (issue 4): the wealth view of programmers
Some reflections on preparing for the Blue Bridge Cup
Eureka core ⼼ source code analysis
Summary of basic knowledge of neural network
剖析虚幻渲染体系(16)- 图形驱动的秘密
Practice of product library platform nexus of Devops
A3.ansible production practice case -- system initialization roles
Analysis report on market business model and development direction of China mobile operation industry from 2022 to 2028
聊聊Adapter模式
Chapter 3 use of requests Library
How to open a futures account safely at present? Which futures companies are more reliable?
2022-2028 global selective laser sintering service industry research and trend analysis report
Dialog+: Audio dialogue enhancement technology based on deep learning