C/C++代码 C/C++资料 代码库 ·

C/C++数据库连接查询(MySql数据库)

朋友的一个小项目需要查询数据库数据,帮忙写了一个小程序供大家参考一下!

	// ListCtrl控件
	CListCtrl C_list_ctrl;//控件调用显示数据时需要使用
        FILE *fp;
	int n = 0;
	char s2[100][20];
	fp = fopen("database.config", "r");
	if ((fp = fopen("database.config", "r")) == NULL)
	{
		MessageBox("读取数据库配置文件失败\n");
		exit(1);
	}
	while (1){
		fscanf(fp, "%s", s2[n]);
		if (feof(fp))break;
		n++;
	}
	fclose(fp);
	fp = NULL;
	DB_HOST=strstr(s2[1], "=");
	DB_PORT = strstr(s2[2], "=");
	DB_DATABASE = strstr(s2[3], "=");
	DB_USERNAME = strstr(s2[4], "=");
	DB_PASSWORD = strstr(s2[5], "="); 
	DB_TABLE = strstr(s2[6], "=");
	DB_CHARACTER = strstr(s2[7], "=");
	//连接数据库
	MYSQL mysql;
	char sql_insert[500];
	mysql_library_init(NULL, 0, 0);
	mysql_init(&mysql);
	if (mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, ++DB_CHARACTER))//设置字符集
	{
		MessageBox("设置字符集失败\n\n");
	}
	if (!mysql_real_connect(&mysql, ++DB_HOST, ++DB_USERNAME, ++DB_PASSWORD, ++DB_DATABASE, 0, NULL, CLIENT_MULTI_STATEMENTS))//连接数据库
	{
		MessageBox("连接MySql数据库失败!");
	}
	sprintf(sql_insert, "select * from %s;", ++DB_TABLE);
	mysql_query(&mysql, sql_insert);          //执行SQL语句
	MYSQL_RES *result = mysql_store_result(&mysql);       //获取资源
	my_ulonglong rowcount = mysql_num_rows(result);        //获取记录数行
	unsigned int fieldcount = mysql_num_fields(result);   //获取字段数列
	MYSQL_FIELD *field = NULL;                            //字段
	MYSQL_ROW row = NULL;                         //记录
	my_ulonglong y = 0;
	while (row = mysql_fetch_row(result))
	{

		for (my_ulonglong i = 0; i<fieldcount; i++)
		{
			if (i == 0)C_list_ctrl.InsertItem(y, "", 0);
			C_list_ctrl.SetItemText(y, i, (CString)row[i]);
		}
		y++;
	}
	mysql_free_result(result);
	mysql_close(&mysql);
	mysql_server_end();
       //mysql_library_end();//这条语句加上可能导致程序意外崩溃

提示:

1、改程序字符集需要设置为(未设置不然需要对宽字符进行优化)

2、本程序使用读取配置文件的形式进行连接数据库,方便使用