今天, 我写了个操作数据库并显示出来的程序。
我发现虽然与C#不同, 但都是连接数据库, 然后SQL查询得到结果, 再对结果进行操作。
其次, 由于使用的是mysql提供的第三方的独立函数库, 所以在编译程序前, 要加上头文件的位置, 以及库文件的位置, 我的分别是-I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient, 第三个是在编译时需加入「-lmysqlclient」(这里需要注意, 把它放在源文件后不会报错), 来告诉编译器我要用的库文件名字。 (下一行的这个链接详细的解释-I, -L, 以及-l 含义 http://www.cnblogs.com/benio/archive/2010/10/25/1860394.html )
另外, MYSQL查询的结果都是字符串, 如果要获取数字,还要将其转换。
最后, 贴出结果和代码。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <mysql.h> 4 void 5 main ( void ) 6 { 7 MYSQL the_conn; 8 MYSQL_RES *mysql_result; 9 MYSQL_ROW mysql_row; 10 int query_row; 11 int query_col; 12 int r,c; 13 14 /* 15 ** 获取本次连接的句柄 16 */ 17 if( mysql_init( &the_conn ) == NULL ){ 18 fprintf( stdout, "Error at mysql_init " ); 19 exit( EXIT_FAILURE ); 20 } 21 22 /* 23 ** 向mysql请求连接 24 */ 25 if( mysql_real_connect( &the_conn, "localhost", "root", "iiiiii", "my_db", MYSQL_PORT, NULL, 0 ) == NULL ){ 26 fprintf( stdout, "Error at mysql_real_connect " ); 27 exit( EXIT_FAILURE ); 28 } 29 30 /* 31 ** 操作数据库 32 */ 33 if( mysql_query( &the_conn, "SELECT * FROM student_info" ) != 0 ){ 34 fprintf( stdout, "Fail at query " ); 35 exit( EXIT_FAILURE ); 36 } 37 fprintf( stdout, "Succeed at query " ); 38 39 40 /* 41 ** 获取查询结果 42 */ 43 mysql_result = mysql_store_result( &the_conn ); 44 query_row = mysql_num_rows( mysql_result ); 45 query_col = mysql_num_fields( mysql_result ); 46 47 48 fprintf( stdout, "Succeed at the connect! " ); 49 50 51 /* 52 ** 显示出来 53 */ 54 for( r = 0; r < query_row; r ++ ){ 55 mysql_row = mysql_fetch_row( mysql_result ); 56 fprintf( stdout, "学号:%s 姓名:%s 年龄:%s ", mysql_row [0], mysql_row [1], mysql_row [2] ); 57 } 58 59 60 /* 61 ** 释放掉mysql_result 62 */ 63 mysql_free_result( mysql_result ); 64 65 /* 66 ** 关闭mysql连接 67 */ 68 mysql_close( &the_conn ); 69 exit( EXIT_SUCCESS ); 70 }