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、本程序使用读取配置文件的形式进行连接数据库,方便使用