C語言連接Mysql實例(一)


首先先介紹以下代碼會用到的Mysql C API(http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c)

(1)MYSQL *mysql_init(MYSQL *mysql)

分配或初始化與mysql_real_connect()相適應的MYSQL對象。如果mysql是NULL指針,該函數將分配、初始化、並返回新對象。否則,將初始化對象,並返回對象的地址。如果mysql_init()分配了新的對象,當調用mysql_close()來關閉連接時。將釋放該對象。

返回值:初始化的MYSQL*句柄。如果無足夠內存以分配新的對象,返回NULL。
錯誤:在內存不足的情況下,返回NULL。

 

(2)MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)

mysql_real_connect()嘗試與運行在主機上的MySQL數據庫引擎建立連接。在你能夠執行需要有效MySQL連接句柄結構的任何其他API函數之前,mysql_real_connect()必須成功完成。
第1個參數應是已有MYSQL結構的地址。調用mysql_real_connect()之前,必須調用mysql_init()來初始化MYSQL結構。

“host”的值必須是主機名或IP地址。如果“host”是NULL或字符串"localhost",連接將被視為與本地主機的連接。

“user”參數包含用戶的MySQL登錄ID。如果“user”是NULL或空字符串"",用戶將被視為當前用戶。

“passwd”參數包含用戶的密碼。

“db”是數據庫名稱。

如果“port”不是0,其值將用作TCP/IP連接的端口號。

如果unix_socket不是NULL,該字符串描述了應使用的套接字或命名管道。

client_flag的值通常為0.

返回值:如果連接成功,返回MYSQL*連接句柄。如果連接失敗,返回NULL。對於成功的連接,返回值與第1個參數的值相同。


(3)int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
執行由“query”指向的SQL查詢,它應是字符串長度字節“long”。正常情況下,字符串必須包含1條SQL語句,而且不應為語句添加終結分號(‘;’)或“\g”。如果允許多語句執行,字符串可包含由分號隔開的多條語句。對於包含二進制數據的查詢,必須使用mysql_real_query()而不是mysql_query(),這是因為,二進制數據可能會包含‘\0’字符。此外,mysql_real_query()比mysql_query()快,這是因為它不會在查詢字符串上調用strlen()。

返回值:如果查詢成功,返回0。如果出現錯誤,返回非0值。

 

詳見:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#mysql-real-query

 

#include <stdio.h>
#include <mysql.h>
#include <string.h>

void main(void)
{
    MYSQL *t_mysql;
    char create[] = "create table stu(name varchar(30),stunum int)";
    char insert[] = "insert into stu values('chris', 3306)";
    char select[] = "select * from stu";
    t_mysql = mysql_init(NULL);
    if(NULL == t_mysql)
        printf("init failed\n");

    if(NULL == mysql_real_connect(t_mysql, "localhost", NULL, "", "test",
            3306, NULL, 0))
        printf("connect failed\n");

    if(mysql_real_query(t_mysql, create, strlen(create)) != 0)
        printf("create failed\n");

    if(mysql_real_query(t_mysql, insert, strlen(insert)) != 0)
        printf("insert failed\n");


}

用此gcc -o t test.c -Iusr/include/mysql -lmysqlclient命令編譯,會出現錯誤:fatal error: mysql.h: 沒有那個文件或目錄

經查詢是缺少libmysqlclient-dev

安裝:sudo apt-get install libmysqlclient-dev

再編譯,成功。

 

運行之后進入Mysql

mysql> select * from stu;
+-------+--------+
| name  | stunum |
+-------+--------+
| chris |   3306 |
+-------+--------+
1 row in set (0.00 sec)


結果正確。

 

初次使用Mysql,還有很多不明之處!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM