int main(void) { attachsql_connect_t *con= NULL; attachsql_error_t *error= NULL; const char *query= "SELECT * FROM t1 WHERE name = ? AND age > ?"; attachsql_return_t ret= ATTACHSQL_RETURN_NONE; con= attachsql_connect_create("localhost", 3306, "test", "test", "testdb", NULL); attachsql_statement_prepare(con, strlen(query), query, &error); while((ret != ATTACHSQL_RETURN_EOF) && (error == NULL)) { ret= attachsql_connect_poll(con, &error); } if (error != NULL) { printf("Error occurred: %s", attachsql_error_message(error)); attachsql_error_free(error); attachsql_statement_close(con); attachsql_connect_destroy(con); return 1; } const char *name= "fred"; uint32_t age= 30; attachsql_statement_set_string(con, 0, strlen(name), name, NULL); attachsql_statement_set_int(con, 1, age, NULL); attachsql_statement_execute(con, &error); ret= ATTACHSQL_RETURN_NONE; while ((ret != ATTACHSQL_RETURN_EOF) && (error == NULL)) { ret= attachsql_connect_poll(con, &error); if (ret != ATTACHSQL_RETURN_ROW_READY) { continue; } attachsql_statement_row_get(con, &error); printf("ID: %d, ", attachsql_statement_get_int(con, 0, &error)); size_t len; char *name_data= attachsql_statement_get_char(con, 1, &len, &error); printf("Name: %.*s, ", (int)len, name_data); printf("Age: %d\n", attachsql_statement_get_int(con, 2, &error)); attachsql_statement_row_next(con); } if (error != NULL) { printf("Error occurred: %s", attachsql_error_message(error)); attachsql_error_free(error); } attachsql_statement_close(con); attachsql_connect_destroy(con); }
int attachsql_drv_prepare(db_stmt_t *stmt, const char *query) { attachsql_connect_t *con= (attachsql_connect_t *)stmt->connection->ptr; attachsql_error_t *error= NULL; attachsql_return_t aret= ATTACHSQL_RETURN_NONE; attachsql_statement_prepare(con, strlen(query), query, &error); while(aret != ATTACHSQL_RETURN_EOF) { aret= attachsql_connect_poll(con, &error); if (error) { log_text(LOG_ALERT, "libAttachSQL Prepare Failed: %u:%s", attachsql_error_code(error), attachsql_error_message(error)); attachsql_error_free(error); return SB_DB_ERROR_FAILED; } } return 0; }