#include #include #include #include #include #define URL_LEN 261 * sizeof(wchar_t) + 1 #define SELECT_QUERY "SELECT url FROM db.tbl LIMIT ?" #define DATABASE_HOST "localhost" #define DATABASE_USER "root" #define DATABASE_PASSWORD "" int main(int argc, char **argv) { int c = atoi(argv[1]); MYSQL_STMT *stmt; MYSQL_BIND bind_p[1]; MYSQL_BIND bind_r[1]; wchar_t wurl_data[URL_LEN] = L""; unsigned long length[1]; MYSQL *con = mysql_init(NULL); if (con == NULL) { fwprintf(stderr, L"%s\n", mysql_error(con)); mysql_library_end(); exit(1); } if (mysql_options(con, MYSQL_SET_CHARSET_NAME, "utf8") != 0) { fwprintf(stderr, L"%s\n", mysql_error(con)); mysql_close(con); mysql_library_end(); exit(1); } if (mysql_real_connect(con, DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD, NULL, 0, NULL, 0) == NULL) { fwprintf(stderr, L"%s\n", mysql_error(con)); mysql_close(con); mysql_library_end(); exit(1); } stmt = mysql_stmt_init(con); if (mysql_stmt_prepare(stmt, SELECT_QUERY, strlen(SELECT_QUERY))) { fwprintf(stderr, L"%s\n", mysql_stmt_error(stmt)); mysql_stmt_free_result(stmt); mysql_close(con); mysql_library_end(); exit(1); } memset(bind_p, 0, sizeof(bind_p)); bind_p[0].buffer_type=MYSQL_TYPE_LONG; bind_p[0].buffer=(char *)&c; bind_p[0].is_null= 0; bind_p[0].length= 0; if (mysql_stmt_bind_param(stmt, bind_p)) { fwprintf(stderr, L"%s\n", mysql_stmt_error(stmt)); mysql_stmt_free_result(stmt); mysql_close(con); mysql_library_end(); exit(1); } if (mysql_stmt_execute(stmt)) { fwprintf(stderr, L"%s\n", mysql_stmt_error(stmt)); mysql_stmt_free_result(stmt); mysql_close(con); mysql_library_end(); exit(1); } memset(bind_r, 0, sizeof(bind_r)); bind_r[0].buffer_type= MYSQL_TYPE_STRING; bind_r[0].buffer= (wchar_t *)wurl_data; bind_r[0].buffer_length= URL_LEN; if (mysql_stmt_execute(stmt)) { fwprintf(stderr, L"%s\n", mysql_stmt_error(stmt)); mysql_stmt_free_result(stmt); mysql_close(con); mysql_library_end(); exit(1); } if (mysql_stmt_bind_result(stmt, bind_r)) { fwprintf(stderr, L"%s\n", mysql_stmt_error(stmt)); mysql_stmt_free_result(stmt); mysql_close(con); mysql_library_end(); exit(1); } if (mysql_stmt_store_result(stmt)) { fwprintf(stderr, L"%s\n", mysql_stmt_error(stmt)); mysql_stmt_free_result(stmt); mysql_close(con); mysql_library_end(); exit(1); } while (!mysql_stmt_fetch(stmt)) { wprintf(L"row: %s\n", wurl_data); } if (mysql_stmt_free_result(stmt) != 0) fwprintf(stderr, L"unable to free stmt"); mysql_close(con); mysql_library_end(); return 0; }