萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL學習筆記

MySQL學習筆記

   Linux 下 C++/C 連接 MySQL 數據庫(一)

  一、連接前准備

  原材料:Ubuntu12.04LTS

  (已經安裝了MySQL5.5或者更高級版本,新立得軟件包,gcc/g++或者CodeBlosks編譯器)

  安裝了以上的軟件包後,我們可以正常使用MySQL完成數據管理工作,但是很多時候我們需要通過編寫程序訪問MySQL。此時,在程序中需要加載MySQL驅動頭文件,但是默認這些驅動包是沒有安裝的,因此我們需要在新立得中找到"libmysqld-dev"包並安裝。

  安裝完成之後,在”/usr/include/mysql/”目錄下會有很多相對應的頭文件,如mysql.h等。

  當寫好程序,需要編譯時:

  1、如果選用的是使用gcc/g++在命令行下完成,則需要加上-lmysqlclient選項。如:

?

1 g++ -lmysqlclient mysql_test.cc -o mysqltest

  2、如果選用的是CodeBlocks,則需在構建選項中,將連接庫設為mysqlclient。

  開始編譯。

  二、頭文件及相關函數分析

  這篇博客中所列的函數全部包含在頭文件下,因此,需要在程序編寫開始處,加入一行:

?

1 #include <mysql/mysql.h>

  1、用CAPI連接MySQL數據庫有兩個步驟:

  1)初始化一個連接句柄

  2)建立連接

  所用到的函數如下:

?

1 2 3 4 5 6 7 8 9 10 11 12 MYSQL *mysql_init(MYSQL *connection);               // 初始化連接句柄 //成功返回MySQL結構指針,失敗返回NULL   MYSQL *mysql_real_connect(MYSQL *connection,                             const char *server_host,                                                    const char *sql_user_name,                            const char *sql_password,                             const char *db_name,                             unsigned int port_number,                             const char *unix_socket_name,                             unsigned int flags);  //建立連接 //成功返回MySQL結構指針,失敗返回NULL

  2、MySQL連接工作完成之後,需要對MySQL的連接進行釋放

?

1 2 void mysql_close(MYSQL *connection); //關閉連接 //參數connection被清空,指針變為無效

  3、mysql_options用於設置額外選項,並影響連接行為,但是它只能在mysql_init和mysql_real_connect之間調用

?

1 int mysql_options(MYSQL *connection, enum mysql_option option, const char *argument);               //設置連接選項

  option的值為下列四個值之一:

?

1 2 3 4 MYSQL_INIT_COMMAND       //連接到MySQL服務器時將執行的命令,再次連接時將自動再次執行。 MYSQL_OPT_CONNECT_TIMEOUT    //連接超時前的等待秒數 MYSQL_OPT_COMPRESS           //網絡連接中使用壓縮機制 MYSQL_OPT_PROTOCOL       //要使用的協議類型,影視mysql.h中定義的mysql_protocol_type枚舉值之一

  4、以上的函數是在假設沒有錯誤的情況下運行,如果數據庫連接過程中出現了錯誤,我們就需要以下兩個函數來處理錯誤信息:

?

1 2 unsigned int mysql_errno(MYSQL *connection);    //返回錯誤代碼(0表示為出現錯誤)  char *mysql_error(MYSQL *connection);           //返回錯誤信息,是以NULL作為終結的字符串

  5、程序訪問數據庫不只是與數據庫建立連接,更重要的是通過SQL語句的執行查詢或改變數據庫中數據。執行SQL語句可以通過下列函數實現。

?

1 int mysql_query(MYSQL *connection, const char *query);

  SQL語句分為兩類,返回數據的SQL和不返回數據的SQL(UPDATE、DELETE、INSERT)。

  下面我們只介紹不返回數據的SQL

?

1 2 my_ulonglong mysql_affected_rows(MYSQL *connection);    //返回查詢受影響的行 //對一段SQL語句執行後可以通過調用此函數查看SQL語句執行後,數據庫中數據狀態改變的行數,以此判斷SQL的執行成功與否。

  三、實例

?

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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 #include <iostream> #include <fstream> #include <cstdlib
copyright © 萬盛學電腦網 all rights reserved