Linuxcentos7/ubantu下:用C語言連線MySQL資料庫
前言:最近用IPC、socket做ATM、聊天專案,考慮到需要用到資料庫,所以總結一下centos、ubantu環境下怎麼用C語言運算元據庫,例如常見的增刪改查等!
一、Centos環境安裝mysql
要想進行 C 語言連線MySQL資料庫的操作,那麼首先要安裝資料庫,安裝資料庫挺簡單的,這裡暫不介紹了。等到 MySQL 安裝完畢之後,就可以在 C 語言下連線MySQL資料庫了。
首先要安裝一個叫 mysql-devel
東西,這個是一個驅動 通過 yum install mysql-devel
命令安裝,然後就是在命令列中執行 vim sql.c
命令,然後寫程式碼。
二、介紹資料庫相關函式
- mysql_real_connect
函式原型: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)
引數說明:
host:本地用localhost或127.0.0.1,遠端寫IP;
user、passwd:登陸資料庫的使用者名稱密碼
db:資料庫名
port:資料庫所用的埠(MySQL一般為3306)
unix_socket:先寫個NULL(官方解釋:如果unix_socket不是NULL,該字串描述了應使用的套接字或命名管道)
client_flag:先寫個0(指定特定功能) - mysql_real_query
函式原型:int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)
引數說明:
query:SQL語句;
length:SQL語句長度 - mysql_store_result
函式原型:MYSQL_RES *mysql_store_result(MYSQL *mysql)
返回值說明:具有多個結果的MYSQL_RES結果集合。如果出現錯誤,返回NULL。 - mysql_fetch_row
函式原型:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
引數說明:具有多個結果的MYSQL_RES結果集合返回值說明:在mysql_store_result()之後使用時,如果沒有更多的行可檢索時,mysql_fetch_row()返回NULL。
三、示例程式碼
- 在執行程式之前需要建一個簡單的表,建表語句如下:
CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL DEFAULT ``, `age` varchar(64) NOT NULL DEFAULT ``, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;
- 程式顯示對person表(上面通過建表語句建的表)的插入、查詢和刪除操作,程式碼如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql.h> int main() { MYSQL conn; int res; MYSQL_RES * result; MYSQL_ROW row; mysql_init(&conn); //第三、四和五個引數,需要自己修改一下 if (mysql_real_connect(&conn, "localhost", "usre_name", "password", "DataBase_name", 0, NULL, 0)) { printf("coneect mysql successful 請選擇功能 "); int choose; char str1[20], str2[20]; char insert_query[80]; char delete_query[50] = "delete from person where name=`"; char select_query[] = "select * from person"; printf("1.insert 2.select 3.delete "); while (scanf("%d", &choose)) { switch (choose) { case 1: //insert printf("姓名 年齡:"); memset(insert_query, 0, sizeof(insert_query)); scanf("%s %s", str1, str2); strcat(insert_query, "insert into person(name,age) values(`"); strcat(insert_query, str1); strcat(insert_query, "`,"); strcat(insert_query, str2); strcat(insert_query, ")"); printf("SQL語句: %s ", insert_query); res = mysql_query(&conn, insert_query); if (!res) { printf("insert %lu rows ", (unsigned long)mysql_affected_rows(&conn)); } else { printf("insert error "); } break; case 2: //select printf("SQL語句: %s ", select_query); if (mysql_query(&conn, select_query) != 0) { fprintf(stderr, "查詢失敗 "); exit(1); } else { if ((result = mysql_store_result(&conn)) == NULL) { fprintf(stderr, "儲存結果集失敗 "); exit(1); } else { while ((row = mysql_fetch_row(result)) != NULL) { printf("name is %s , ", row[0]); printf("age is %s ", row[1]); } } } break; case 3: //delete printf("姓名 "); scanf("%s", str1); strcat(delete_query, str1); strcat(delete_query, "`"); printf("SQL語句: %s ", delete_query); res = mysql_real_query(&conn, delete_query, (unsigned int)strlen(delete_query)); if (!res) { printf("delete successful "); } else { printf("delete error "); } break; } } mysql_close(&conn); } return 0; }
編譯是要注意鏈上動態庫,編譯語句如下:
gcc sql.c -o sql -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient
總結:以上就可以完成對Centos環境,用C語言對資料庫的操作了
四、Ubantu環境安裝mysql
ubuntu上安裝mysql非常簡單隻需要幾條命令就可以完成。
3. sudo apt-get install libmysqlclient-dev
#include <mysql/mysql.h> #include <stdio.h> #include <stdlib.h> int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char server[] = "localhost"; char user[] = "root"; char password[] = "mima"; char database[] = "mysql"; conn = mysql_init(NULL); if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s ", mysql_error(conn)); exit(1); } if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s ", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); printf("MySQL Tables in mysql database: "); while ((row = mysql_fetch_row(res)) != NULL) { printf("%s ", row[0]); } mysql_free_result(res); mysql_close(conn); printf("finish! "); return 0; }
編譯程式碼的時候需要連結mysql的庫,可以通過如下方式編譯:
g++ -Wall mysql_test.cpp -o mysql_test -lmsqlclient
總結:運算元據庫是最常見的了,一般公司都會封裝好現成的資料庫操作函式,但瞭解一下封裝原理,還是很好的!
——————————————-
個性簽名:獨學而無友,則孤陋而寡聞。做一個靈魂有趣的人!
如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!
萬水千山總是情,打賞一分行不行,所以如果你心情還比較高興,也是可以掃碼打賞博主,哈哈哈(っ•̀ω•́)っ⁾⁾!
相關文章
- R語言連線資料庫(MySQL)R語言資料庫MySql
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- C語言連線mysql資料庫查詢中文的資料表亂碼問題C語言MySql資料庫
- 用thinkphp連線mysql資料庫PHPMySql資料庫
- 怎樣用c/c++程式設計連線mysql資料庫?C++程式設計MySql資料庫
- 基於C#語言Oracle.ManagedDataAccess操作Oracle資料庫連線語句C#Oracle資料庫
- 連線mysql資料庫MySql資料庫
- django | 連線mysql資料庫DjangoMySql資料庫
- 如何連線MySQL資料庫MySql資料庫
- pycharm連線MySQL資料庫PyCharmMySql資料庫
- Mysql資料庫表連線MySql資料庫
- PHP連線MySql資料庫PHPMySql資料庫
- mysql資料庫連線(MySQLdb)MySql資料庫
- Weka 連線MySQL資料庫MySql資料庫
- java連線mysql資料庫JavaMySql資料庫
- Ruby連線MySQL資料庫MySql資料庫
- C#連線資料庫C#資料庫
- 用VB連線MySQL資料庫模組(詳解)MySql資料庫
- 用JSP連線mysql資料庫的方法JSMySql資料庫
- C#連線MySQL8.0資料庫失敗C#MySql資料庫
- 用c#建立與資料庫的連線 c#連sqlserverC#資料庫SQLServer
- 易語言連結資料庫資料庫
- (轉)PHP連線資料庫之PHP連線MYSQL資料庫程式碼PHP資料庫MySql
- SQL資料庫連線語句SQL資料庫
- Django 2連線MySQL資料庫DjangoMySql資料庫
- mysql資料庫怎麼連線MySql資料庫
- 遠端連線mysql資料庫MySql資料庫
- 【JavaWeb】JDBC連線MySQL資料庫JavaWebJDBCMySql資料庫
- Python連線MySQL資料庫PythonMySql資料庫
- 使用C#連線資料庫C#資料庫
- C++ 連線pg資料庫C++資料庫
- C語言線性連結串列C語言
- C語言連線Oracle (轉載)C語言Oracle
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- MySQL下載安裝配置及JDBC連線資料庫MySqlJDBC資料庫
- CentOS下配置ODBC連線MySQL資料庫 V2.0CentOSMySql資料庫
- python資料插入連線MySQL資料庫PythonMySql資料庫
- 用c語言實現資料結構——單連結串列C語言資料結構