1. MySQL的安裝與配置:
在Ubuntu下安裝MySQL方法很簡單,使用如下命令:
複製代碼 代碼如下:
sudo apt-get install mysql-server
安裝的過程中系統會提示設定root密碼,此過程可以跳過,但是建議在安裝時提示設定root密碼的時候自行設定,免得後面設定麻煩。安裝結束之後,系統會啟動mysql服務,可以使用命令去查看來驗證mysql服務是否已經安裝成功:
複製代碼 代碼如下:
ps -el | grep mysql
如果mysql服務沒有正常的運行,可以使用下面指令對mysql服務進行重啟:
複製代碼 代碼如下:
sudo service mysql restart
喜歡使用Workbench介面的,還需要安裝Workbench:
複製代碼 代碼如下:
sudo apt-get install mysql-workbench
Workbench的啟動使用如下命令:
複製代碼 代碼如下:
mysql-workbench --log-level=debug3 --verbose
2. MySQL命令列:
我們使用root去登入MySQL,然後做相關的操作:
複製代碼 代碼如下:
mysql -u root -p
在此,系統會提示輸入密碼,只需要輸入之前設定的MySQL密碼即可,然後程式會進入mysql命令列模式下,假設我們需要查看user資訊,我們使用如下命令:
複製代碼 代碼如下:
use mysql
SELECT host, user, password FROM user;
MySQL會返回所有host,user和password等資訊。其他比較複雜的操作,諸如添加資料庫,添加表等和普通的資料操作命令一致,後面會以一個執行個體來說明。讓我們趕快進入Linux下C操作MySQL的實踐吧!
3. 使用C語言管理MySQL資料庫:
首先,我們需要安裝在Linux下操作MySQL多依賴的庫,安裝命令如下:
複製代碼 代碼如下:
sudo apt-get install libmysqlclient-dev
安裝了這個之後,我們編程所需要的標頭檔,庫檔案等就齊全了,讓我們開始C編程之旅吧!
首先,讓我們準備一個我們用來折騰的空間,也就是準備一個折騰專屬賬戶,一個折騰專屬資料庫和資料表等:
複製代碼 代碼如下:
#添加賬戶
GRANT ALL ON *.* TO rick@localhost IDENTIFIED BY 'secret'
\q
#使用新建立的rick賬戶登入
mysql -u rick -p
#建立資料庫
CREATE DATABASE foo;
然後,我們使用一個sql檔案插入資料表和測試資料:
複製代碼 代碼如下:
--
-- Create the table children
--
CREATE TABLE children (
childno int(11) NOT NULL auto_increment,
fname varchar(30),
age int(11),
PRIMARY KEY (childno)
);
--
-- Populate the table 'children'
--
INSERT INTO children(childno, fname, age) VALUES (1, 'Jenny', 21);
INSERT INTO children(childno, fname, age) VALUES (2, 'Andrew', 17);
INSERT INTO children(childno, fname, age) VALUES (3, 'Gavin', 8);
INSERT INTO children(childno, fname, age) VALUES (4, 'Duncan', 6);
INSERT INTO children(childno, fname, age) VALUES (5, 'Emma', 4);
INSERT INTO children(childno, fname, age) VALUES (6, 'Alex', 15);
INSERT INTO children(childno, fname, age) VALUES (7, 'Adrian', 9);
將上述sql語句存為create_children.sql,然後使用下列命令匯入MySQL資料庫foo:
複製代碼 代碼如下:
mysql -u rick --password=secret foo
\. create_children.sql
好了,寫個demo進行測試吧:
複製代碼 代碼如下:
#include <stdlib.h>
#include <stdio.h>
#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", "secret", "foo", 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_error(&my_connection)) {
fprintf(stderr, "Connection error %d: %s\n", mysql_errno(&my_connection), mysql_error(&my_connection));
}
}
return EXIT_SUCCESS;
}
將上述代碼儲存為demo.c。上述代碼中,我們需要包含mysql.h標頭檔來使用mysql提供的API對MySQL進行操作。程式寫好了,編譯過程需要加入需要的連結資訊:
複製代碼 代碼如下:
gcc -I/usr/include/mysql demo.c -L/usr/lib/mysql -lmysqlclient -o demo
好了,程式成功編譯,運行一下試試吧:
複製代碼 代碼如下:
./demo
#結果如下
Connection success
Inserted 1 rows