栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言与数据库的创建使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言与数据库的创建使用

c语言与数据库的创建使用

data.h头文件





struct ONLINE_USER
{
	int fd;	   			//-1
	int flage; 			// registed or not
	char name[32];
	char passwd[32];
};



int db_add_user(char name[], char passwd[]);



int db_user_if_reg(char *name);


int db_user_pwd_corrct(char *name, char *passwd);


int database_init();


void database_close();

data.c实现文件


#include 
#include 
#include 
#include 
#include 



#include 
#include 
#include 
#include 
#include 
#include "data.h"

#define DATABASE_NAME "user.db"
#define TABLE_USER "user"

pthread_mutex_t db_mutex;
sqlite3 *db;      //数据库



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.rn");
		return -1;
	}
	if ((strlen(name) > 32) || (strlen(passwd) > 32))
	{
		printf("The entered name or password is too long.rn");
		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: %srn", sqlite3_errmsg(db));
	}
	else
	{
		//printf("User added successfully.rn");
	}
	//printf("rn");
	return 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: %srn", errmsg);
		sqlite3_free(errmsg);
	}
	index = ncolumn;
	
	if (nrow > 0)
	{
		//在数据库中找到指定名字的用户(数据),至少有一条数据
		state = 1;
	}
	else
	{
		//在数据库中没有找到指定名字的用户(数据)
		state = -1;
	}
	sqlite3_free_table(result);
	return state;
}


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);

	
	if (sqlite3_get_table(db, sqlstr, &result, &nrow, &ncolumn, &errmsg) != 0)
	{
		printf("Database query error: %srn", errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	index = ncolumn;
	
	if (nrow > 0)
	{
		//在数据库中找到指定名字和密码的用户(数据)
		state = 1;
	}
	else
	{
		//在数据库中没有找到指定名字和密码的用户(数据)		
		state = -1;
	}
	sqlite3_free_table(result);
	return state;
}


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: %srn", sqlite3_errmsg(db));
		return -1;
	}

	
	ret = sqlite3_exec(db, sql, NULL, 0, &errmsg);

	if (ret != SQLITE_OK)
	{
		fprintf(stderr, "Database query error: %srn", errmsg);
		sqlite3_free(errmsg);
	}
	else
	{
		fprintf(stdout, "The database initialized successfully.rn");
	}
	return 0;
}


void database_close()
{
	sqlite3_close(db);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990925.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号