在MySQL数据库中使用C执行SQL语句的方法
2022-11-12 09:21:57
内容摘要
这篇文章主要为大家详细介绍了在MySQL数据库中使用C执行SQL语句的方法,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!他们将讨论返回数据
文章正文
这篇文章主要为大家详细介绍了在MySQL数据库中使用C执行SQL语句的方法,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE。然后,他们将编写从数据库检索数据的简单程序执行SQL语句现在,我们已经有了一个连接,并且知道如何处理错误,是时候讨论使用我们的数据库来作一些实际工作了。执行所有类型的SQL的主关键字是mysql_query:int mysql_query(MYSQL *connection, const char *query)正如您所见,它非常简单。它取一个指向连接结构的指针和包含要执行的SQL的文本字符串;与命令行工具不同,将不使用结束分号。成功之后,返回0。在需要包含二进制数据的特殊情况下,可以使用相关的函数,mysql_real_query。虽然出于本章的目的,我们仅需要讨论mysql_query。不返回数据的SQL语句我们将先讨论UPDATE、DELETE和INSERT语句。因为它们不返回数据,所以更易于使用。这里我们将介绍的另一个重要函数是检查受影响的行数的函数:my_ulonglong mysql_affected_rows(MYSQL *connection);可能关于这一函数的最显而易见的事就是其非同寻常的返回结果。由于可移植性原因,这是一个特殊的无符号类型。为了在printf中使用,建议将其强制转换成使用%lu格式规范的无符号长整数。这个函数返回受以前的UPDATE、INSERT或DELETE查询影响的行数,这些查询是使用mysql_query执行的。通常对于mysql_函数,返回码0表示没有行受影响;正数表示实际结果,通常是受影响的行数。如前所述,当使用mysql_affected_rows时可能出现未期望的结果。让我们先讨论受INSERT语句影响的行数,它将按预期进行操作。将下列代码添加到程序 connect2.c 中,并且称其为insert1.c:代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <code> # include # include # include "mysql.h" int main(int argc, char *argv[]) { MYSQL my_connection; int res; mysql_init(&my_connection); if (mysql_real_connect(&my_connection, "localhost" , "rick" , "bar" , "rick" , 0, NULL, 0)) { printf( "Connection success\n" ); res = mysql_query(&my_connection, "INSERT INTO children(fname,age), VALUES( 'Ann' ,3)"); if (!res) { printf( "Inserted %lu rows\n" , (unsigned long)mysql_affected_rows(&my_connection)); } else { fprintf (stderr, "Insert error %d: s\n" ,mysql_errno , (&my_connection), mysql_error(&my_connection)); } mysql_close(&my_connection); } else { fprintf (stderr, "Connection failed\n" ); if (mysql_errno(&my_connection)) { fprintf (stderr, "Connection error %d: %s\n" , mysql_errno(&my_connection), mysql_error(&my_connection)); } } return EXIT_SUCCESS; } </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <code> mysql_errno(&my_connection), mysql_error(&my_connection)); } } res = mysql_query(&my_connection, "UPDATE children SET AGE = 4 WHERE fname = 'Ann' "); if (!res) { printf( "Updated %lu rows\n" , (unsigned long)mysql_affected_rows(&my_connection)); } else { fprintf (stderr, "Update error %d: %s\n" , mysql_errno(&my_connection), mysql_error(&my_connection)); } </code> |
childno | fname | age |
1
2 3 4 5 6 7 8 9 10 11 |
Jenny
Andrew Gavin Duncan Emma Alex Adrian Ann Ann Ann Ann |
14
10 4 2 0 11 5 3 4 3 4 |
代码如下:
1 2 3 4 | <code> if (mysql_real_connect(&my_connection, "localhost" , "rick" , "bar" , "rick" , 0, NULL, CLIENT_FOUND_ROWS)) { </code> |
代码如下:
1 2 3 | <code> MYSQL_RES *mysql_store_result(MYSQL *connection); </code> |
代码如下:
1 2 3 | <code> my_ulonglong mysql_num_rows(MYSQL_RES *result); </code> |
代码如下:
1 2 3 | <code> MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); </code> |
代码如下:
1 2 3 | <code> void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset); </code> |
代码如下:
1 2 3 | <code> MYSQL_ROW_OFFEST mysql_row_tell(MYSQL_RES *result); </code> |
代码如下:
1 2 3 | <code> MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset); </code> |
代码如下:
1 2 3 | <code> void mysql_free_result(MYSQL_RES *result); </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <code> # include # include # include "mysql.h" MYSQL my_connection; MYSQL_RES *res_ptr; MYSQL_ROW sqlrow; int main(int argc, char *argv[]) { int res; mysql_init(&my_connection); if (mysql_real_connect(&my_connection, "localhost" , "rick" , "bar" , "rick" , 0, NULL, 0)) { printf( "Connection success\n" ); res = mysql_query(&my_connection, "SELECT childno, fname, age FROM children WHERE age > 5"); if (res) { printf( "SELECT error: %s\n" , mysql_error(&my_connection)); } else { res_ptr = mysql_store_result(&my_connection); if (res_ptr) { printf( "Retrieved %luows\n" ,(unsignedlong)mysql_num_rows(res_ptr)); while ((sqlrow = mysql_fetch_row(res_ptr))) { printf( "Fetched data...\n" ); } if (mysql_errno(&my_connection)) { fprintf (stderr, "Retrive error: s\n" ,mysql_error(&my_connection)); } } mysql_free_result(res_ptr); } mysql_close(&my_connection); } else { fprintf (stderr, "Connection failed\n" ); if (mysql_errno(&my_connection)) { fprintf (stderr, "Connection error %d: %s\n" , mysql_errno(&my_connection),mysql_error(&my_connection)); } } return EXIT_SUCCESS; } </code> |
代码如下:
1 2 3 | <code> MYSQL_RES *mysql_use_result(MYSQL *connection); </code> |
注:关于在MySQL数据库中使用C执行SQL语句的方法的内容就先介绍到这里,更多相关文章的可以留意
代码注释