如何解决MonetDB Mapi库数据插入
void * Data [NUM_ROW][NUM_COLS];
string insertTablePrepare = "INSERT INTO temp VALUES(";
for (size_t k = 0; k < NUM_COLS; k++) {
insertTablePrepare += "?";
if (k==NUM_COLS-1) continue;
insertTablePrepare += ",";
}
insertTablePrepare += ")";
hdl = mapi_prepare(dbh,insertTablePrepare.c_str());
for (size_t j = 0; j < NUM_ROW; j++) {
for (size_t k = 0; k < NUM_COLS; k++) {
switch (ColumnDataType[k]) {
case VARCHAR:
ret = mapi_param_type(hdl,k,MAPI_VARCHAR,Data[j][k]);
break;
case SMALLINT:
ret = mapi_param_type(hdl,MAPI_SHORT,Data[j][k]);
break;
case INT:
ret = mapi_param_type(hdl,MAPI_INT,Data[j][k]);
break;
case BIGINT:
ret = mapi_param_type(hdl,MAPI_LONG,Data[j][k]);
break;
case DECIMAL:
ret = mapi_param_type(hdl,MAPI_FLOAT,Data[j][k]);
break;
case DOUBLE:
ret = mapi_param_type(hdl,MAPI_DOUBLE,Data[j][k]);
break;
case REAL:
ret = mapi_param_type(hdl,Data[j][k]);
break;
case DATE:
ret = mapi_param_type(hdl,MAPI_DATE,Data[j][k]);
break;
default:
printf("UnkNow data type %d\n",ColumnDataType[k]);
}
}
ret=mapi_execute(hdl);
}
我创建了一个数据集,并将其放入二维空指针数组中。当我尝试使用mapi_prepare()和mapi_execute()将所有记录插入monetdb时,以上代码无法按预期工作。仅保留一条记录,即可成功插入。但是,当记录数大于一个时。程序报告
realloc():下一个大小无效
中止(核心已弃用)
任何人都可以在for循环中使用mapi_execute()来遍历所有插入记录。预先感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。