/*测试代码
char**results;
char**field = new char*[4];
field[0] = new char[64];
field[1] = new char[64];
field[2] = new char[64];
field[3] = NULL;
char*sn = "sn_id";
char*name = "name";
char*electricity = "request_count";
strcpy_s(field[0], 64, sn);
strcpy_s(field[1], 64, name);
strcpy_s(field[2], 64, electricity);
err = seleteData(results, tableName, s_equipment_key, field);
frees(field);
frees(results);
*/
int selete_data(char**&result, char* tableName, char* id, char**field)
{
MYSQL * sql = get_mysql();
if (sql == NULL)
{
printf("请连接数据库!!!\n");
return NULL;
}
/*----------------------------------------SELECT字符串拼接start--------------------------------------*/
char* select = "SELECT %s ";
int length = strlen(select) + strlen(field[0]) - 1;
char*sentence = (char*)calloc(length, sizeof(char));
sprintf_s(sentence, length, select, field[0]);
int count = 0;
pointer_count((void**)field, count);
for (int i = 1; i < count; i++)
{
select = ",%s ";
length = strlen(sentence);
append_new_buffer(sentence, length, select, strlen(select));//SELECT sn_id ,%s
length = strlen(sentence) + strlen(field[i]) - 1;
char*select_ = (char*)calloc(length, sizeof(char));
sprintf_s(select_, length, sentence, field[i]);SELECT sn_id ,na_id
if (sentence != NULL)
{
free(sentence); sentence = NULL;
}
sentence = select_;
}
select = " FROM %s WHERE id='%s'";
length = strlen(sentence);
append_new_buffer(sentence, length, select, strlen(select));//SELECT sn_id ,%s
length = length + strlen(tableName) + strlen(id) - 3;
char*sentence_ = (char*)calloc(length, sizeof(char));
sprintf_s(sentence_, length, sentence, tableName, id);
if (sentence != NULL) { free(sentence); sentence = NULL; }
/*-------------------------------------SELECT字符串拼接end-----------------------------------------*/
int err = mysql_real_query(sql, sentence_, length);
if (sentence_ != NULL) { free(sentence_); sentence_ = NULL; }
if (err)
{
printf("查询时出错: %s !!!\n", mysql_error(sql));
return -1;
}
MYSQL_RES *m_res = NULL;
m_res = mysql_store_result(sql);//将结果保存在res结构体中
//循环打印每行每个字段
MYSQL_ROW row = NULL;
row = mysql_fetch_row(m_res);
if (NULL == row)
{
printf("没有查询到对应的数据!!!\n");
return -1;
}
result = (char**)calloc(count + 1, sizeof(char*));
unsigned int t;
for (t = 0; t < mysql_num_fields(m_res); t++) {
int length = strlen(row[t]) + 1;
result[t] = (char*)calloc(length, sizeof(char));
strcpy_s(result[t], length, row[t]);
}
result[t] = NULL;
/*for (t = 0; t < count; t++) {
printf("'%s':%s\n", field[t], result[t]);
}*/
mysql_free_result(m_res);
return 0;
}
这是最初版本。请移步github