C语言操作MySQL-----又一个小技巧
生活随笔
收集整理的這篇文章主要介紹了
C语言操作MySQL-----又一个小技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言操作MySQL
- 連接MySQL
- 常用數據庫操作函數
- 查詢操作
- 1、`mysql_query()`函數
- 插入操作
- 修改操作
- 刪除操作
在開始之前需要進行環境的配置,請參考這篇博客:
VS2019配置MySQL環境
連接MySQL
需要用到函數:mysql_real_connect()
其語法格式如下:
例子:
//初始化mysqlmysql_init(&mysql); //連接mysql,數據庫if (!(mysql_real_connect(&mysql, "127.0.0.1", "root", "123", "test", 0, NULL, 0))) //中間分別是主機,用戶名,密碼,數據庫名,端口號(可以寫默認0或者3306等),可以先寫成參數再傳進去{printf("Error connecting to database:%s\n", mysql_error(&mysql));return false;}else{MessageBoxA(NULL, "連接MYSQL數據成功!", "消息", MB_OK);printf("Connected...\n");return true;}常用數據庫操作函數
| mysql_affected_rows() | 返回上次調用查詢更改/刪除/插入的行數 |
| mysql_change_user() | 更改打開連接上的用戶和數據庫 |
| mysql_close() | 關閉數據庫 |
| mysql_commit() | 提交事務 |
| mysql_real_connect() | 連接到MySQL服務器 |
| mysql_error() | 返回上次調用的MySQL函數的錯誤信息 |
| mysql_fetch_fields() | 返回字段結構的數組 |
| mysql_fetch_row() | 從結果集中獲取下一行 |
| mysql_num_fields() | 返回結果集中的列數 |
| mysql_num_rows() | 返回結果集中的行數 |
| mysql_query() | 執行指定為“以NULL終結的字符串”的SQL查詢 |
| mysql_rollback() | 回滾事務 |
| mysql_select_db() | 選擇數據庫 |
| mysql_store_result() | 檢索完整的結果集至客戶端 |
查詢操作
1、mysql_query()函數
MySQL提供mysql_query()函數用于執行SQL語句,執行指定為“以NULL終結的字符串“的SQL查詢。
相當于是將SQL用將函數來執行,SQL語句則和c語言無關,可以參考這篇文章:MySQL基本操作
例如:
if(mysql_query(&mysql,"select * from tb_book")){//查詢失敗 }else{ //查詢成功 }插入操作
插入操作是使用mysql_query()函數和 SQL中的插入語句來實現的。
注意
- 插入的數據類型應與被加入列的數據類型對應相同或者系統可以自動轉換。
- 添加的數據范圍必須在列規定的范圍內。
例如:
void Insert() {char sql[1000] = "insert into tb_book (ID,bookname,author,bookconcern) values(";char dest[2000] ="";strcat_s(dest,sizeof(dest), sql);strcat_s(dest, sizeof(dest), "'");scanf_s("%s", id, 10);strcat_s(dest, sizeof(dest), id); // 將圖書館編號追加到sql語句后面strcat_s(dest, sizeof(dest), "', '");scanf_s("%s", bookname, 50);strcat_s(dest, sizeof(dest), bookname);//圖書名printf("\t Author: ");scanf_s("%s", &author, 50);strcat_s(dest, sizeof(dest), "', '");strcat_s(dest, sizeof(dest), author); //作者printf("\t Bookconcern: ");scanf_s("%s", &bookconcern,100);strcat_s(dest, sizeof(dest), "', '");strcat_s(dest, sizeof(dest), bookconcern);//簡介strcat_s(dest, sizeof(dest), "');");printf("%s\n", dest);if (mysql_query(&mysql, dest) != 0) {//將錯誤日志寫到文件中printf( "\t Can not insert record!\n");}else{printf("\t Insert success!\n");} } 在C語言中在執行插入,刪除和修改操作時,不用在執行語句后再提交事務。(區別與Python)修改操作
插入操作是使用mysql_query()函數和 SQL中的更新語句來實現的。
例如:
void Update() {printf("\t Bookname:")scanf("%s", &bookname);char sql[1000] = "update tb_book set bookname= '";strcat(dest, sql);strcat(dest, bookname);//圖書名printf("\t Author");scanf("%s", &author);strcat(dest, "',author= '"); strcat(dest, author);//作者printf("\t Bookconcern");scanf("%s", &bookconcern);strcat(dest, "',bookconcern= '");strcat(dest, bookconcern);//簡介strcat(dest, "' where id = ");strcat(dest, id);if (mysql_query(&mysql, dest) != 0) {//將錯誤日志寫到文件中fprintf(stderr, "\t Can not modify record!\n", mysql_errno(&mysql));}else{printf("\t Modify success!\n")} }刪除操作
插入操作是使用mysql_query()函數和 SQL中的刪除語句來實現的。
示例:
void delete() {scanf("%d", &id);sql = "select * from tb_book where id=";strcat(dest, sql);strcat(dest, id);sql = "delect from tb_book where ID= ";printf("%s", dest1);strcat(dest1, sql);strcat(dest1, id);if (mysql_query(&mysql, dest1) != 0) {//將錯誤日志寫到文件中fprintf(stderr, "\t Can not delete record!\n", mysql_errno(&mysql));}else{printf("\t Delete success!\n")} }總結
以上是生活随笔為你收集整理的C语言操作MySQL-----又一个小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言手撸搜索(查找)二叉树---创建,
- 下一篇: python之jieba库