新聞中心
隨著信息化和數(shù)字化的不斷發(fā)展和更新,數(shù)據(jù)庫這一重要的信息管理工具也逐漸普及和成為各個行業(yè)中不可缺少的存在。然而很多初學(xué)者對于如何在C語言中調(diào)用SQL數(shù)據(jù)庫查詢信息還比較陌生,本文將給出一種簡單易行的方法,希望對C語言程序設(shè)計的初學(xué)者有所幫助。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供桓臺網(wǎng)站建設(shè)、桓臺做網(wǎng)站、桓臺網(wǎng)站設(shè)計、桓臺網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、桓臺企業(yè)網(wǎng)站模板建站服務(wù),十多年桓臺做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
一. 數(shù)據(jù)庫的準(zhǔn)備
1. 建立一個名為”student” 的數(shù)據(jù)庫
在MySQL中打開一個命令行窗口,輸入以下代碼:
“`
CREATE DATABASE student;
“`
2. 建立一個名為”score”的表格
輸入以下代碼:
“`
USE student;
CREATE TABLE score(
name CHAR(20),
subject CHAR(10),
score INT
);
“`
3. 插入一些學(xué)生的成績數(shù)據(jù)
在表”score”中,插入學(xué)生的成績數(shù)據(jù),例如:
“`
INSERT INTO score VALUES(“張三”, “語文”, 85);
INSERT INTO score VALUES(“張三”, “數(shù)學(xué)”, 90);
INSERT INTO score VALUES(“李四”, “語文”, 78);
INSERT INTO score VALUES(“李四”, “數(shù)學(xué)”, 60);
“`
至此,我們的數(shù)據(jù)庫環(huán)境已經(jīng)準(zhǔn)備完畢。
二. C語言中調(diào)用SQL數(shù)據(jù)庫查詢成績
接下來我們進入本文的主題——學(xué)習(xí)如何在C語言中調(diào)用SQL數(shù)據(jù)庫查詢成績。
1. 函數(shù)頭文件和預(yù)編譯指令
在程序的開頭需要添加以下兩個頭文件:
“`
#include
#include
“`
此外,在程序開頭也需要添加一個預(yù)編譯指令:
“`
#define HOST “l(fā)ocalhost”
#define USER “root”
#define PASSWORD “password”
#define DATABASE “student”
“`
其中HOST為數(shù)據(jù)庫所在的IP地址,USER為訪問數(shù)據(jù)庫的用戶名,PASSWORD為登錄數(shù)據(jù)庫時需要用到的密碼,DATABASE是我們剛剛創(chuàng)建的數(shù)據(jù)庫名。
2. mn函數(shù)體
在mn函數(shù)中,首先需要聲明和初始化一些變量和結(jié)構(gòu)體,用來連接和查詢數(shù)據(jù)庫。代碼如下:
“`
int mn(int argc, char *argv[]) {
MYSQL mysql;
MYSQL_RES *res = NULL;
MYSQL_ROW row = NULL;
int t, r;
t = r = 0;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, “utf8”);
mysql_options(&mysql, MYSQL_INIT_COMMAND, “SET NAMES utf8”);
mysql_options(&mysql, MYSQL_OPT_RECONNECT, “true”);
mysql_options(&mysql, MYSQL_OPT_COMPRESS, “true”);
mysql_real_connect(&mysql, HOST, USER, PASSWORD, DATABASE, 0, NULL, 0);
char query[1000];
}
“`
其中,MYSQL是MySQL數(shù)據(jù)庫的一個C語言封裝結(jié)構(gòu)體,MYSQL_RES是表示查詢結(jié)果的結(jié)構(gòu)體,MYSQL_ROW是指向查詢結(jié)果中的某一行數(shù)據(jù)的指針。
`mysql_init`用于初始化MYSQL結(jié)構(gòu)體;`mysql_options`設(shè)置一些數(shù)據(jù)庫連接參數(shù);`mysql_real_connect`用于連接數(shù)據(jù)庫。query[1000]用于存儲查詢語句,最長可以達到1000個字符。如果查詢語句超過了1000個字符,則會出現(xiàn)一些問題。
3. 查詢語句和數(shù)據(jù)查詢
現(xiàn)在,我們就可以開始寫查詢語句,通過代碼:
“`
sprintf(query, “SELECT name, subject, score FROM score WHERE name=’%s'”, “張三”);
mysql_query(&mysql, query);
res = mysql_store_result(&mysql);
while((row = mysql_fetch_row(res))) {
printf(“name:%s,subject:%s,score:%s\n”,row[0],row[1],row[2]);
}
mysql_free_result(res);
“`
我們可以在MySQL中查詢學(xué)生“張三”的成績,查詢結(jié)果會以列表的形式輸出,如下所示:
“`
name:張三,subject:語文,score:85
name:張三,subject:數(shù)學(xué),score:90
“`
因此,我們可以根據(jù)學(xué)生姓名進行查詢,獲得該學(xué)生所有的成績記錄。
4. 關(guān)閉數(shù)據(jù)庫連接
程序執(zhí)行完畢后,需要關(guān)閉數(shù)據(jù)庫的連接,防止出現(xiàn)錯誤,代碼如下:
“`
mysql_close(&mysql);
“`
到此為止,我們就成功地在C語言中調(diào)用了SQL數(shù)據(jù)庫,并獲得了查詢結(jié)果。
相關(guān)問題拓展閱讀:
- C語言環(huán)境下如何使用動態(tài)SQL?
C語言環(huán)境下如何使用動態(tài)SQL?
你真是牛人呀。數(shù)據(jù)庫類型那么多,有oracle mysql DB2 SQL SQLsevera。你使用的那種。
相對于來說我使用oracle多。
給你一個pro*c的操作實例吧
/ 定義符號常數(shù)
#define USERNAME “SCOTT”
#define PASSWORD “x”
#include
// 說明SQLCA和ORACA
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE ORACA;
// 啟用ORACLE通訊區(qū):ORACA=YES,使它能被使用
EXEC ORACLE OPTION (ORACA=YES);
// 說明SQL變量
EXEC SQL BEGIN DECLARE SECTION;
char* username=USERNAME;
char* password=PASSWORD;
VARCHAR sqlstmt;
int emp_number;
VARCHAR emp_name;
VARCHAR job,job1,job2;
float salary;
EXEC SQL END DECLARE SECTION;
main()
{
EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
// 發(fā)生錯誤時,保存SQL語句至ORACA
oraca.orastxtf=ORASTFERR;
// 登錄到ORACLE
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf(“/nConnect to ORACLE./n”);
// 構(gòu)造動態(tài)SQL語句
sqlstmt.len=sprintf(sqlstmt.arr,”INSERT INTO EMP(EMPNO,ENAME,JOB,SAL)VALUES(:V1,:V2,:V3,:V4)”);
// 顯示SQL語句
puts(sqlstmt.arr);
// 用PREPARE語句旁滲和分析當(dāng)前的動態(tài)INSERT語運盯句,語句名是S
EXEC SQL PREPARE S FROM :sqlstmt;
// 循環(huán)插表
for(;;)
{
printf(“/nEnter employee number:”);
scanf(“%d”,&emp_number);
if(emp_number==0)break;
printf(“/nEnter employee name:”);
scanf(“%s”,&emp_name.arr);
emp_name.len=strlen(emp_name.arr);
printf(“/nEnter employee job:”);
scanf(“%s”,&job.arr);
job.len=strlen(job.arr);
salary = 0; // With VC6, Missing this line will cause C Run-Time Error R6002.
printf(“/nEnter salary:”);
scanf(“%f”,&salary);
EXEC SQL EXECUTE S USING :emp_number,:emp_name,:job,:salary;
}
// 提交事務(wù)喊敗,退出ORACLE
EXEC SQL COMMIT RELEASE;
printf(“/nHave a good day!/n”);
exit(0);
sqlerror:
// 打印錯誤信息
printf(“/n%.*s/n”,sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
// 打印出錯SQL語句
printf(“/n/”%.*s…/”/n”,oraca.orastxt.orastxtl,oraca.orastxt.orastxtc);
// 打印出錯SQL語句所在行號及所在文件名
printf(“on line %d of %.*s/n/n”,oraca.oraslnr,
oraca.orasfnm.orasfnml,oraca.orasfnm.orasfnmc);
// 回滾事務(wù),退出ORACLE
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK RELEASE;
exit(1);
}
sql語句進行字符串拼裝,敏老把動態(tài)的位置用變量者桐拼進去
有字符串拼接函數(shù)的,莫虛,當(dāng)然更好自己寫一個,可以充分提高首拿坦效率
關(guān)于c語言調(diào)用sql數(shù)據(jù)庫 查詢成績的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機房服務(wù)器托管/機柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機房租用、服務(wù)器托管、機柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動、聯(lián)通機房等。
文章題目:C語言調(diào)用SQL數(shù)據(jù)庫查詢成績,一步到位!(c語言調(diào)用sql數(shù)據(jù)庫查詢成績)
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/dhsphhj.html


咨詢
建站咨詢
