检查mysql表中是否存在列名

时间:2016-03-13 10:52:59

标签: mysql c mysql-connector

我想检查我的表中是否存在特定列。如果它不存在我想用C编程语言添加它。

我尝试了以下代码:

mysql_query(sqlhnd, "SELECT * FROM my_table");
MYSQL_RES *confres = mysql_store_result(sqlhnd);
int totalrows = mysql_num_rows(confres);
int numfields = mysql_num_fields(confres);
MYSQL_FIELD *mfield;

while((row = mysql_fetch_row(confres)))
{
    for(i = 0; i < numfields; i++)
    {
        char *val = row[i];
        // do something with val...
    }
}

我想将val与列名进行比较,例如:

if( !strcmp(val,"column")) { create the column using alter table }

我无法执行此部分代码

1 个答案:

答案 0 :(得分:0)

MySQL有一些方法,但我省略了C代码:

  1. 执行desc my_table并在输出中查找您的列。
  2. 只需select your_col from my_table limit 1并查找真实错误(不是空集)
  3. SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='your_db' AND TABLE_NAME='my_table';
  4. 我更喜欢第三种选择。它为您提供了特定表的所有列名称列表。我认为,根据您的尝试,您不会获得列名,只能获取其内容。