linux安裝mysql和使用c語(yǔ)言操作數(shù)據(jù)庫(kù)的方法 c語(yǔ)言連接mysql
1. MySQL的安裝與配置:
在Ubuntu下安裝MySQL方法很簡(jiǎn)單,使用如下命令:
sudo apt-get install mysql-server
安裝的過(guò)程中系統(tǒng)會(huì)提示設(shè)置root密碼,此過(guò)程可以跳過(guò),但是建議在安裝時(shí)提示設(shè)置root密碼的時(shí)候自行設(shè)置,免得后面設(shè)置麻煩。安裝結(jié)束之后,系統(tǒng)會(huì)啟動(dòng)mysql服務(wù),可以使用命令去查看來(lái)驗(yàn)證mysql服務(wù)是否已經(jīng)安裝成功:
ps -el | grep mysql
如果mysql服務(wù)沒(méi)有正常的運(yùn)行,可以使用下面指令對(duì)mysql服務(wù)進(jìn)行重啟:
sudo service mysql restart
喜歡使用Workbench界面的,還需要安裝Workbench:
sudo apt-get install mysql-workbench
Workbench的啟動(dòng)使用如下命令:
mysql-workbench --log-level=debug3 --verbose
2. MySQL命令行:
我們使用root去登錄MySQL,然后做相關(guān)的操作:
mysql -u root -p
在此,系統(tǒng)會(huì)提示輸入密碼,只需要輸入之前設(shè)置的MySQL密碼即可,然后程序會(huì)進(jìn)入mysql命令行模式下,假設(shè)我們需要查看user信息,我們使用如下命令:
use mysql
SELECT host, user, password FROM user;
MySQL會(huì)返回所有host,user和password等信息。其他比較復(fù)雜的操作,諸如添加數(shù)據(jù)庫(kù),添加表等和普通的數(shù)據(jù)操作命令一致,后面會(huì)以一個(gè)實(shí)例來(lái)說(shuō)明。讓我們趕快進(jìn)入Linux下C操作MySQL的實(shí)踐吧!
3. 使用C語(yǔ)言管理MySQL數(shù)據(jù)庫(kù):
首先,我們需要安裝在Linux下操作MySQL多依賴(lài)的庫(kù),安裝命令如下:
sudo apt-get install libmysqlclient-dev
安裝了這個(gè)之后,我們編程所需要的頭文件,庫(kù)文件等就齊全了,讓我們開(kāi)始C編程之旅吧!
首先,讓我們準(zhǔn)備一個(gè)我們用來(lái)折騰的空間,也就是準(zhǔn)備一個(gè)折騰專(zhuān)屬賬戶(hù),一個(gè)折騰專(zhuān)屬數(shù)據(jù)庫(kù)和數(shù)據(jù)表等:
#添加賬戶(hù)
GRANT ALL ON *.* TO rick@localhost IDENTIFIED BY 'secret'
\q
#使用新創(chuàng)建的rick賬戶(hù)登錄
mysql -u rick -p
#創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE foo;
然后,我們使用一個(gè)sql文件插入數(shù)據(jù)表和測(cè)試數(shù)據(jù):
--
-- 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語(yǔ)句存為create_children.sql,然后使用下列命令導(dǎo)入MySQL數(shù)據(jù)庫(kù)foo:
mysql -u rick --password=secret foo
\. create_children.sql
好了,寫(xiě)個(gè)demo進(jìn)行測(cè)試吧:
#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頭文件來(lái)使用mysql提供的API對(duì)MySQL進(jìn)行操作。程序?qū)懞昧?,編譯過(guò)程需要加入需要的鏈接信息:
gcc -I/usr/include/mysql demo.c -L/usr/lib/mysql -lmysqlclient -o demo
好了,程序成功編譯,運(yùn)行一下試試吧:
./demo
#結(jié)果如下
Connection success
Inserted 1 rows
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(169.求大多數(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(169.求大多數(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C/C++連接MySQL數(shù)據(jù)庫(kù)詳細(xì)圖文教程
在實(shí)際開(kāi)發(fā)中我們經(jīng)常需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),下面這篇文章主要介紹了C/C++連接MySQL數(shù)據(jù)庫(kù)的詳細(xì)圖文教程,文中通過(guò)代碼以及圖文介紹是非常詳細(xì),需要的朋友可以參考下2024-01-01
FFmpeg實(shí)現(xiàn)將編碼后數(shù)據(jù)保存成mp4
這篇文章主要為大家詳細(xì)介紹了FFmpeg如何實(shí)現(xiàn)將編碼后數(shù)據(jù)保存成mp4,即從內(nèi)存塊中獲取原始數(shù)據(jù),然后依次進(jìn)行解碼、編碼、最后保存成mp4視頻文件,感興趣的可以了解一下2023-08-08
C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實(shí)例代碼
這篇文章介紹了C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10
Cocos2d-x Schedule定時(shí)器的使用實(shí)例
這篇文章主要介紹了Cocos2d-x Schedule定時(shí)器的使用實(shí)例,本文的講解內(nèi)容包含在代碼注釋中,需要的朋友可以參考下2014-09-09
C語(yǔ)言中數(shù)據(jù)是如何存儲(chǔ)在內(nèi)存中的
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類(lèi)型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類(lèi)型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-04-04
C語(yǔ)言實(shí)現(xiàn)文件版通訊錄的代碼分享
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)文件版通訊錄,主要運(yùn)用了結(jié)構(gòu)體,一維數(shù)組,函數(shù),分支與循環(huán)語(yǔ)句等等知識(shí),需要的可以參考一下2023-01-01
C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實(shí)例代碼
這篇文章主要介紹了C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-03-03
使用C++的inipp庫(kù)處理配置文件.ini的示例詳解
一個(gè)ini文件由多個(gè)節(jié)section組成,每個(gè)節(jié)由多個(gè)鍵值對(duì)組成,本文給大家介紹了使用第三方庫(kù)inipp來(lái)操作ini文件,文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-01-01

