当前位置:网站首页>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 .
边栏推荐
- Tiger DAO VC产品正式上线,Seektiger生态的有力补充
- Cvpr2022 tutorial | machine learning remote sensing processing: agriculture and food security, University of Maryland
- Intimacy - [comfortable exit] - final communication to reduce injury
- Tiger Dao VC products are officially launched, a powerful supplement to seektiger ecology
- How to guarantee idempotency of message queue
- Unity技术手册 - GetKey和GetAxis和GetButton
- 图解栈帧运行过程
- MATLAB Programming Notes
- A3.ansible production practice case -- system initialization roles
- [dynamic programming] longest palindrome substring thinking about dynamic transfer cycle sequence
猜你喜欢

NRM source switching tool

Record the learning record of the exists keyword once
This 110 year old "longevity" enterprise has been planning for the next century
To ensure the Beijing Winter Olympic Games, digital data gives a power without code!
![Intimacy - [comfortable exit] - final communication to reduce injury](/img/ab/c02d3b4213e1706e379d26073cbf07.jpg)
Intimacy - [comfortable exit] - final communication to reduce injury

2022-2028 global industrial TFT LCD industry survey and trend analysis report

Talk about adapter mode

2022-2028 global TFT LCD touch screen industry research and trend analysis report

简单好用的缓存库 gcache

2022-2028 global horizontal reciprocating compressor industry research and trend analysis report
随机推荐
华为云SRE确定性运维专刊(第一期)
What is 5g? What can 5g do? What will 5g bring in the future?
Reasons why MySQL cannot be connected externally after installing MySQL database on ECs and Solutions
Illustration de l'exécution du cadre de pile
[WPF] XAML code skills that can be directly used for converting CAD engineering drawings to WPF
What are the debugging methods for nodejs
【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
哪些PHP开源作品值得关注
Touring band: a 5g based multi camera remote distributed video production experiment
Lecture 14 of the Blue Bridge Cup -- number theory [exercises]
Facing the "industry, University and research" gap in AI talent training, how can shengteng AI enrich the black land of industrial talents?
Beyond natural motion: exploring the discontinuity of video interpolation
2022-2028 global SiC igniter industry research and trend analysis report
Evaluate the generalization performance of models and build integrated models using out of pocket prediction (oof)
Basic concepts of processor scheduling
Analysis report on market demand situation and investment direction of China's optical transmission equipment industry from 2022 to 2028
NARI radar's IPO meeting: it plans to raise nearly 1billion yuan. Bao Xiaojun and his wife are Canadians
在线CRUDhasone关联查询报错Unabletouseinternalvariable:List
2022-2028 global selective laser sintering service industry research and trend analysis report
Global and Chinese flame retardant ABS industry development trend and market demand analysis report 2022 ~ 2028