與 PostgreSQL 相似
可使用許多不同的語言來訪問 MySQL
包括 C
C++
Java 和 Perl
從 Professional Linux Programming 中第
章有關 MySQL 的下列章節中
Neil Matthew 和 Richard Stones 使用詳盡的 MySQL C 接口向我們介紹了如何在 MySQL 數據庫中執行 SQL 語句
他們將看看返回數據的語句
例如 INSERT 以及不返回數據的語句
例如 UPDATE 和 DELETE
然後
他們將編寫從數據庫檢索數據的簡單程序
執行 SQL 語句
現在
我們已經有了一個連接
並且知道如何處理錯誤
是時候討論使用我們的數據庫來作一些實際工作了
執行所有類型的 SQL 的主關鍵字是 mysql_query
int mysql_query(MYSQL *connection
const char *query)
正如您所見
它非常簡單
它取一個指向連接結構的指針和包含要執行的 SQL 的文本字符串
與命令行工具不同
將不使用結束分號
成功之後
返回
在需要包含二進制數據的特殊情況下
可以使用相關的函數
mysql_real_query
雖然出於本章的目的
我們僅需要討論 mysql_query
不返回數據的 SQL 語句
我們將先討論 UPDATE
DELETE 和 INSERT 語句
因為它們不返回數據
所以更易於使用
這裡我們將介紹的另一個重要函數是檢查受影響的行數的函數
my_ulonglong mysql_affected_rows(MYSQL *connection);
可能關於這一函數的最顯而易見的事就是其非同尋常的返回結果
由於可移植性原因
這是一個特殊的無符號類型
為了在 printf 中使用
建議將其強制轉換成使用 %lu 格式規范的無符號長整數
這個函數返回受以前的 UPDATE
INSERT 或 DELETE 查詢影響的行數
這些查詢是使用 mysql_query 執行的
通常對於 mysql_ 函數
返回碼
表示沒有行受影響
正數表示實際結果
通常是受影響的行數
如前所述
當使用 mysql_affected_rows 時可能出現未期望的結果
讓我們先討論受 INSERT 語句影響的行數
它將按預期進行操作
將下列代碼添加到程序 connect
c 中
並且稱其為 insert
c
#include
#include
#include mysqlh
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 NULL )) {
printf(Connection success\n);
res = mysql_query(&my_connection INSERT INTO children(fnameage)
VALUES(Ann));
if (!res) {
printf(Inserted %lu rows\n
(unsigned long)mysql_affected_rows(&my_connection));
} else {
fprintf(stderr Insert error %d: s\nmysql_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;
}
正如預期插入的行數為
現在我們更改代碼所以 insert 部分被替換成
mysql_errno(&my_connection) mysql_error(&my_connection));
}
}
res = mysql_query(&my_connection UPDATE children SET AGE =
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)
From:http://tw.wingwit.com/Article/program/MySQL/201311/29370.html