c ++ mysql语句插入成功但没有添加任何内容

时间:2017-03-20 02:53:12

标签: c++ mysql

大家。我试图使用mysql-c连接器插入一些数据插入mysql。

void Mysql_Statement(MYSQL * mysql)
{
    /// 测试失败
    int ret = 0;
    char errMsg[200] = {0};

    const char* statement = "insert into table_name(test) values(?);";
    MYSQL_STMT *stmt = mysql_stmt_init(mysql);
    if(!stmt)
    {
        fprintf(stderr,"mysql_stmt_init,2 failed\n");
        fprintf(stderr,"%s\n",mysql_stmt_error(stmt));
        exit(0);
    }
    if(mysql_stmt_prepare(stmt,statement,strlen(statement)))
    {
        fprintf(stderr,"mysql_stmt_prepare,2 failed\n");
        fprintf(stderr,"%s\n",mysql_stmt_error(stmt));
        exit(0);
    }
    int i = 0;
    int max_num = 3;
    const int FIELD_NUM = 1;
    while(i < max_num)
    {
        MYSQL_BIND bind[FIELD_NUM];
        memset(bind,0,FIELD_NUM * sizeof(MYSQL_BIND));

        int age = 111;

        bind[0].buffer_type = MYSQL_TYPE_LONG;
        bind[0].buffer = malloc(sizeof(int));
        *(int*)bind[0].buffer = 111;
        bind[0].length =  0;

        if(mysql_stmt_bind_param(stmt,bind))
        {
            fprintf(stderr,"mysql_stmt_bind_param failed\n");
            fprintf(stderr,"%s\n",mysql_stmt_error(stmt));
            exit(0);
        }
        cout << "before execute\n";
        if(mysql_stmt_execute(stmt))
        {
            fprintf(stderr,"mysql stmt execute failed\n");
            fprintf(stderr,mysql_stmt_error(stmt));
            exit(0);
        }
        cout << "after execute\n";

        i++;
    }
    mysql_commit(mysql);
//  mysql_stmt_send_long_data(stmt);
    mysql_stmt_close(stmt);
}

但是在mysql中,结果是这样的。

mysql> select * from table_name;
+----+------+
| id | test |
+----+------+
|  1 |    0 |
|  2 |    0 |
|  3 |    0 |
|  4 |    0 |
|  5 |    0 |
|  6 |    0 |
|  7 |    0 |
|  8 |    0 |
|  9 |    0 |
| 10 |    0 |
| 11 |    0 |
| 12 |    0 |
+----+------+
12 rows in set (0.00 sec)

0 个答案:

没有答案