day31 SQLITE

數據庫相關函數

數據庫創建

int sqlite3_open( const char *filename,? sqlite3 **ppDb);

功能:打開數據庫,不存在則創建

參數:const char *filename? ? ? ? 數據庫名

? ? ? ? ? ?sqlite3 **ppDb? ? ? ? ? ? ? ? ?二級指針,傳出ppDb數據庫的一級指針

返回值:成功返回SQLITE_OK 失敗返回錯誤碼 sqlite_errmsg()來獲取錯誤信息

關閉數據庫和錯誤信息

int sqlite3_close(sqlite3* ppDb) & const char * sqlite3_errmsg(sqlite3* ppDb)

int sqlite3_errcode(sqlite3 *db)

功能:關閉數據庫?? ? ? ? ? ? ? ? ? 參數返回值參上

功能:返回錯誤信息? ? ? ? ? ? ? ?返回值為錯誤信息字符串

功能:返回錯誤碼? ? ? ? ? ? ? ? ? ?返回錯誤碼

操作數據表

int sqlite3_exec(sqlite3 *ppDb,const char *sql

,int (*callback)(void*,int,char**,char**),void*,char**errmsg)

功能:實現sql指令

參數:

sqlite3 *ppDb數據庫
?const char *sql?sql指令
int (*callback)(void*,int,char**,char**)?結果輸出函數
void*傳入輸出函數的參數
char**errmsg錯誤信息

int (*callback)(void*,int,char**,char**)?

void *arg外部傳入參數
int cols列數
char** msg_text數據文本
char** msg_header表頭

要輸出結果用結果輸出函數,無需填NULL

返回值:參上

代碼實現增刪改查

#include <stdio.h>
#include <25061head.h>
int table_add(sqlite3 *pdb)
{int num;char name[18];char sex[10];double score;printf("請輸入學號 姓名 性別 成績\n");scanf(" %d %s %s %lf",&num,name,sex,&score);//添加信息char sql[128]="";sprintf(sql,"insert into stuinfo values(%d,\"%s\",\"%s\",%.2lf);",\num,name,sex,score);char *errmsg=NULL;if(sqlite3_exec(pdb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("添加信息失敗 %s \n",errmsg);sqlite3_free(errmsg);return -1;		}printf("添加信息成功\n");return 0;}
int table_delete(sqlite3 *pdb)
{int delete_num;printf("請輸入刪除信息的學號\n");scanf("%d",&delete_num);getchar();	char sql[128]="";sprintf(sql,"delete from stuinfo where num=%d",delete_num);char *errmsg=NULL;if(sqlite3_exec(pdb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("刪除信息失敗 %s \n",errmsg);sqlite3_free(errmsg);return -1;		}printf("信息刪除成功\n");return 0;
}
int table_updata(sqlite3 *pdb)
{int updata_num;char updata_msg[32]="";printf("請輸入要更新信息的學號\n");scanf("%d",&updata_num);getchar();printf("請輸入要更新的信息 eg: score=90 name='ttt'\n");scanf("%s",updata_msg);//updata_msg[strlen(updata_msg)+1]=' ';getchar();char sql[128]="";//printf("num=%d\n",updata_num);sprintf(sql,"update stuinfo set %s where num=%d",updata_msg,updata_num);//printf("%s\n",sql);char *errmsg=NULL;if(sqlite3_exec(pdb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("更新信息失敗 %s \n",errmsg);sqlite3_free(errmsg);return -1;		}printf("更新信息成功\n");return 0;
}
int callback(void *arg,int cols,char** msg_text,char** msg_header)
{if(*(int *)arg==0){*(int *)arg=1;for(int i=0;i<cols;i++){printf("%s\t",*(msg_header+i));}putchar(10);}for(int j=0;j<cols;j++){	printf("%s\t",*(msg_text+j));}putchar(10);return 0;
}
int table_select(sqlite3 *pdb)
{char sql[128]="";sprintf(sql,"select * from stuinfo");char *errmsg=NULL;int arg=0;if(sqlite3_exec(pdb,sql,callback,&arg,&errmsg)!=SQLITE_OK){printf("展示信息失敗\n");sqlite3_free(errmsg);return -1;}
}
int main(int argc, const char *argv[])
{	//創建數據庫sqlite3 *pdb=NULL;int ret=sqlite3_open("./my.db",&pdb);if(ret!=0){printf("sqlite3_open error errcode=%d errmsg=%s\n",\sqlite3_errcode(pdb),sqlite3_errmsg(pdb));return -1;}//創建數據表char *sql="create table if not exists stuinfo \(num int,name text,sex char,score double);"; char *errmsg=NULL;if(sqlite3_exec(pdb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("創建數據表失敗 %s \n",errmsg);sqlite3_free(errmsg);return -1;		}printf("數據表創建成功\n");int i;while(1){   printf("1.添加信息\n");printf("2.刪除信息\n");printf("3.修改信息\n");printf("4.展示信息\n");printf("輸入\n");scanf("%d",&i);getchar();switch(i){case 1: table_add(pdb);break;case 2: table_delete(pdb);break;case 3: table_updata(pdb);break;case 4: table_select(pdb);break;case 0:exit(0);default: printf("輸入錯誤 重新輸入\n");}}return 0;
}

今日刷題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919533.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919533.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919533.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式-SPI番外之按鈕驅動程序的編寫-Day15

目錄 一、按鈕簡單操作回憶 二、按鈕新操作實現 &#xff08;1&#xff09;按鈕的點擊實現燈亮/滅 ①連接電路 ②初始化板載LED和按鈕 ③按鈕程序的基本原理&#xff08;核心仍為0亮/1滅&#xff09; ④按鈕消抖的原理 三、按鈕封裝的操作-點擊&#xff0c;雙擊&#xf…

星域智鏈科技:用科技點亮生活,以 AI 拓展無限可能

星域智鏈科技&#xff08;東莞市&#xff09;有限公司簡介 星域智鏈科技&#xff08;東莞市&#xff09;有限公司&#xff0c;理念是 讓科技便利生活、豐富生活&#xff0c;專注于科技、AI領域。 全場景 GPS 定位器 —— 精準追蹤&#xff0c;守護安全&#xff0c;適用于車輛…

國內代理IP在SEO行業中的應用

隨著互聯網的快速發展&#xff0c;SEO&#xff08;搜索引擎優化&#xff09;已經成為了數字營銷的重要組成部分。無論是企業還是個人站長&#xff0c;都希望通過SEO提升自己網站的排名和流量。然而&#xff0c;隨著競爭的激烈&#xff0c;傳統的SEO優化手段已經逐漸顯現出局限性…

Linux + arm 內存屏障

ARM 硬件層的屏障指令DMB (Data Memory Barrier)&#xff1a;保證在它之前的內存訪問&#xff08;符合給定域/類型&#xff09;在它之后的內存訪問之前對可見性排序。常用域&#xff1a;ish&#xff08;Inner Shareable&#xff09;&#xff0c;sy&#xff08;system-wide&…

網絡安全中的遠程控制活動檢測與防御策略

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;遠程控制技術在IT領域中用于網絡連接和設備操作&#xff0c;但同樣被黑客利用進行非法入侵。端口占用情況是識別遠程控制活動的關鍵因素&#xff0c;使用工具如"cports"可以監控這些端口。系統中未知…

UIGestureRecognizer 各個子類以及其作用

在 iOS 里&#xff0c;UIGestureRecognizer 是一個抽象基類&#xff0c;專門用來處理手勢事件。它本身不能直接用&#xff0c;必須用它的 子類。這些子類分別對應常見的手勢識別器。常見的 UIGestureRecognizer 子類及作用1. UITapGestureRecognizer作用&#xff1a;點擊手勢&a…

計算機網絡 HTTPS 全流程

HTTPS 通信的全流程&#xff08;特別是 TLS 握手階段&#xff09;中使用的三個隨機數是保障安全性的核心設計&#xff0c;不能隨意減少。每個隨機數都承擔著至關重要的安全職責。下面詳細解釋 HTTPS 全流程&#xff0c;并重點分析這三個隨機數的作用和必要性&#xff1a;&#…

DL00271-基于YOLOv11的激光雷達LiDAR船舶目標檢測含完整數據集

【CSDN推薦】基于YOLOv11的激光雷達&#xff08;LiDAR&#xff09;船舶目標檢測——含完整數據集&#xff01;&#x1f6a2; 科研人員必看&#xff01; 高校老師、學生和研究者們&#xff0c;前沿技術來了&#xff01;本論文利用YOLOv11模型&#xff0c;結合激光雷達&#xff0…

SQL-leetcode—3374. 首字母大寫 II

3374. 首字母大寫 II 表&#xff1a;user_content -------------------- | Column Name | Type | -------------------- | content_id | int | | content_text| varchar | -------------------- content_id 是這張表的唯一主鍵。 每一行包含一個不同的 ID 以及對應的文…

告別籠統的 200 OK:一份給 API 設計者的 HTTP 狀態碼終極指南

文章目錄寫在前面問題描述核心結論與建議簡要描述詳細闡述1xx - 信息性響應 (Informational)2xx - 成功 (Successful)3xx - 重定向 (Redirection)4xx - 客戶端錯誤 (Client Error)5xx - 服務器錯誤 (Server Error)HTTP 狀態碼速查表參考以及更多更詳細的狀態碼查詢寫在前面 你…

從防抖節流到鏈表樹:編程世界中的抽象優化藝術

從防抖節流到鏈表樹&#xff1a;編程世界中的抽象優化藝術 在編程的知識體系中&#xff0c;有些概念看似毫不相關&#xff0c;卻在底層邏輯上有著驚人的相似之處。防抖與節流、鏈表與樹&#xff0c;這兩組分屬不同領域的概念&#xff0c;正是這種思維共性的典型代表。它們不僅展…

第三階段數據-3:數據庫腳本生成,備份與還原,分離與附加

1_生成數據庫腳本&#xff08;1&#xff09;在數據庫上右鍵選擇任務&#xff08;2&#xff09;選擇生成腳本&#xff08;3&#xff09;選擇下一步&#xff0c;如果下次不想顯示此頁面&#xff0c;可勾選不再顯示此頁&#xff08;4&#xff09;如果導出全部數據&#xff0c;選擇…

React框架超詳細入門到實戰項目演練【前端】【React】

React框架 1.前端展示解釋 當客戶端訪問服務器時&#xff0c;會從服務器中下載很多靜態文件到本地&#xff0c;比如css、js等前端渲染文件 下載完成之后瀏覽器會將這些文件組合形成前端頁面渲染出來。 2.React概述 React是一個專注于構建用戶界面的JavaScript庫&#xff0c;…

本地部署的終極多面手:Qwen2.5-Omni-3B,視頻剪、音頻混、圖像生、文本寫全搞定

Qwen2.5-Omni-3B是什么&#xff1f; Qwen2.5-Omni-3B 是由阿里巴巴 Qwen 團隊推出的一款輕量級多模態大模型&#xff0c;作為 Qwen2.5-Omni-7B 的高效優化版本&#xff0c;專為消費級硬件環境量身打造。該模型具備處理文本、音頻、圖像和視頻等多種模態輸入的能力&#xff0c;…

連續空間強化學習:策略輸出的兩種形態 —— 概率分布與確定性動作

在強化學習的世界里&#xff0c;智能體與環境的交互核心是 “動作選擇”。當面對離散動作空間&#xff08;如圍棋的落子點、游戲的按鍵操作&#xff09;時&#xff0c;智能體可以直接枚舉或概率選擇有限的動作&#xff1b;但在連續動作空間中&#xff08;如機器人關節角度、無人…

IT運維背鍋權限泄露?集中式管控如何化解風險?

在企業數字化轉型的浪潮中&#xff0c;IT運維團隊常常被推到風口浪尖。員工離職后權限未及時回收、賬號共享導致數據泄露、跨系統權限配置不一致……這些問題一旦暴露&#xff0c;IT運維往往成為“背鍋俠”。權限泄露不僅威脅企業數據安全&#xff0c;還可能導致合規性風險&…

2025 世界機器人大會啟示錄:機構學 × AI × 視頻鏈路的融合之路

引言 2025 年 8 月 8 日&#xff0c;北京再一次成為全球矚目的科技焦點——世界機器人大會盛大開幕。來自全球的 200 余家頂尖企業齊聚一堂&#xff0c;帶來超過 1500 件展品&#xff0c;其中首發新品突破 100 款&#xff0c;涵蓋了從工業制造、醫療康復到服務陪伴、特種作業的…

從零開始部署經典開源項目管理系統最新版redmine6-Linux Debian12

安裝Debian 12 前面為了在windows上好開發&#xff0c;想要在windows上配置開發環境&#xff0c;以源碼方式在本地部署運行&#xff0c;但經過好幾天各種版本切換及配置組件庫等各種操作后&#xff0c;證明windows上搭建redmine6支持的運行環境沒有那么簡單&#xff0c;后續有…

超長視頻生成新突破!LongVie框架問世,創作不再受時長限制

超長視頻生成新突破&#xff01;LongVie框架問世&#xff0c;創作不再受時長限制 文章來源&#xff1a;Poixe AI 在AI技術飛速發展的當下&#xff0c;視頻生成領域取得了令人矚目的進步&#xff0c;尤其是在短視頻創作方面。然而&#xff0c;當視頻時長超過一分鐘時&#xff…

MongoDB 查詢方法與高級查詢表(Python版)

目錄 一、MongoDB3步快速安裝 1.1?下載安裝包 1.2運行安裝程序? 1.3?驗證安裝?打開CMD執行&#xff1a; 1.4 基本查詢操作 二、高級查詢操作符表 2.1 比較操作符 2.2 邏輯操作符 2.3 元素操作符 2.4 數組操作符 三、高級查詢案例 3.1 復雜條件組合 3.2 數組查…