本文整理汇总了C++中ODBCStatement类的典型用法代码示例。如果您正苦于以下问题:C++ ODBCStatement类的具体用法?C++ ODBCStatement怎么用?C++ ODBCStatement使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ODBCStatement类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DEBUG_PRINTF
Handle<Value> ODBCStatement::ExecuteNonQuery(const Arguments& args) {
DEBUG_PRINTF("ODBCStatement::ExecuteNonQuery\n");
HandleScope scope;
REQ_FUN_ARG(0, cb);
ODBCStatement* stmt = ObjectWrap::Unwrap<ODBCStatement>(args.Holder());
uv_work_t* work_req = (uv_work_t *) (calloc(1, sizeof(uv_work_t)));
execute_work_data* data =
(execute_work_data *) calloc(1, sizeof(execute_work_data));
data->cb = Persistent<Function>::New(cb);
data->stmt = stmt;
work_req->data = data;
uv_queue_work(
uv_default_loop(),
work_req,
UV_ExecuteNonQuery,
(uv_after_work_cb)UV_AfterExecuteNonQuery);
stmt->Ref();
return scope.Close(Undefined());
}
示例2: DEBUG_PRINTF
void ODBCStatement::UV_AfterExecuteDirect(uv_work_t* req, int status) {
DEBUG_PRINTF("ODBCStatement::UV_AfterExecuteDirect\n");
execute_direct_work_data* data = (execute_direct_work_data *)(req->data);
Nan::HandleScope scope;
//an easy reference to the statment object
ODBCStatement* self = data->stmt->self();
//First thing, let's check if the execution of the query returned any errors
if(data->result == SQL_ERROR) {
ODBC::CallbackSQLError(
SQL_HANDLE_STMT,
self->m_hSTMT,
data->cb);
}
else {
Local<Value> info[4];
bool* canFreeHandle = new bool(false);
info[0] = Nan::New<External>((void*) (intptr_t) self->m_hENV);
info[1] = Nan::New<External>((void*) (intptr_t) self->m_hDBC);
info[2] = Nan::New<External>((void*) (intptr_t) self->m_hSTMT);
info[3] = Nan::New<External>((void*)canFreeHandle);
//TODO persistent leak?
Nan::Persistent<Object> js_result;
js_result.Reset(Nan::New<Function>(ODBCResult::constructor)->NewInstance(4, info));
info[0] = Nan::Null();
info[1] = Nan::New(js_result);
Nan::TryCatch try_catch;
data->cb->Call(2, info);
if (try_catch.HasCaught()) {
FatalException(try_catch);
}
}
self->Unref();
delete data->cb;
free(data->sql);
free(data);
free(req);
}
示例3: DEBUG_PRINTF
void ODBCStatement::UV_AfterExecuteNonQuery(uv_work_t* req, int status) {
DEBUG_PRINTF("ODBCStatement::ExecuteNonQuery\n");
execute_work_data* data = (execute_work_data *)(req->data);
Nan::HandleScope scope;
//an easy reference to the statment object
ODBCStatement* self = data->stmt->self();
//First thing, let's check if the execution of the query returned any errors
if(data->result == SQL_ERROR) {
ODBC::CallbackSQLError(
SQL_HANDLE_STMT,
self->m_hSTMT,
data->cb);
}
else {
SQLLEN rowCount = 0;
SQLRETURN ret = SQLRowCount(self->m_hSTMT, &rowCount);
if (!SQL_SUCCEEDED(ret)) {
rowCount = 0;
}
SQLFreeStmt(self->m_hSTMT, SQL_CLOSE);
Local<Value> info[2];
info[0] = Nan::Null();
info[1] = Nan::New<Number>(rowCount);
Nan::TryCatch try_catch;
data->cb->Call(Nan::GetCurrentContext()->Global(), 2, info);
if (try_catch.HasCaught()) {
FatalException(try_catch);
}
}
self->Unref();
delete data->cb;
free(data);
free(req);
}