c語言sql
SQL既結構化查詢語言,是一種關系型資料庫.作用和ORACLE,DB2,MYSQL類似.
作用:存儲數據,查詢數據.處理數據.
C語言是一種過程性語言,是從事系統軟體和游戲軟體開發的語言,現在主要是用VC++,它也可以從事手機系統開發,像塞班系統就是VC開發的.
SQL是一種非過程化語言,你只用下命令,不用說明怎麼做,軟體幫你解決.而C語言是過程化語言,你不僅要下命令,還要說明怎麼做,難度遠遠大於SQL.
② c語言和SQL的比較
說說C語言:
我學過C語言,它只能編寫DOS程序,功能不是很強大,但卻是基礎,因為大部分流行的編程軟體都與C語言的語法結構類似,一定要先學。
C++:
C語言進化而來的,有強大的功能,舉例吧:
軟體:
微軟的Office系列
Macromedia網頁三劍客 - flash,dreamweaver,fireworks
Adobe出的 超有名的作圖軟體 - PhotoShop
3D動畫軟體 - 3DMax
.....
游戲:
PC平台幾乎所有的游戲
星際爭霸、魔獸爭霸、CS、帝國時代、跑跑卡丁車、傳奇、魔獸世界....
那數不勝數了,自己數吧:)
以上均出自C++之手,原因是C++靠近計算機底層,編寫出來的程序對系統資源依賴較小,功能強大,運行速度快,比如你的兩個朋友與你分別玩 用 VB、Java、與C++編寫的「跑跑卡丁車」,你玩C++那款游戲已經跑玩結束了,發現你的兩個朋友還沒開始跑呢,那是相當的卡啊,所以這一系列的軟體、游戲都會採用C++編寫。
雖然C++很有優點,但是對於學習者來說應該是比較困難的一門語言。(再說明一點,C或C++屬於語言,而VC - 「Visual C++」是用來編寫C或C++的工具)
說說SQL:
SQL是結構化查詢語言(STRUCTURED QUERY LANGUAGE),它是一組專用的程序命令,可完成如下任務:
在一個或多個資料庫的一個或多個表中檢索數據.
通過插入,刪除或更改記錄操縱表中數據.
對表的數據進行數學統計.
創建,更改或刪除資料庫中的表(僅ACCESS資料庫)
創建或刪除表中的索引.
SQL查詢語言主要結構為:
Select 查詢欄位 from 表名 Where 查詢條件語句 [排序語句或分組語句]
查詢欄位必須分別用(西文)逗號分開或就用一個*號代替.
僅供參考.
③ 如何在C語言裡面執行SQL語句
C語言程序與資料庫打交道的方式分為直連(同步)和非直連(非同步)兩種,它們的特點如下所示:
1. 直連方式
在該方式中,C語言程序直接與資料庫進行消息的交互。
該方式的優點是消息交互是即時的,C語言程序向資料庫發送消息之後,很快就能夠得到結果;缺點是如果資料庫執行緩慢,那麼C語言程序需要掛在那裡等待結果,影響了程序執行效率。
2. 非直連方式
在該方式中,C語言程序通過一個獨立的第三方模塊間接與資料庫進行消息的交互。
該方式的優點是當C語言程序向第三方模塊發送消息之後,可以不用等待資料庫返回結果而去執行其它流程;缺點是如果消息序列號沒有定義好,那麼極有可能會導致第三方模塊返回的結果出現混亂。因此,在該方式中,定義好發送消息的順序(即設定好序列號)很重要。
由於需要與資料庫打交道,因此要在C語言程序所使用的配置文件中填寫好關聯資料庫的相關信息,如資料庫機器的IP地址、埠號、用戶名、密碼、模塊號和所操作的具體資料庫名等。在運行程序之前,一定要確保相關配置項信息的正確性。
④ c語言中的sql寫法
前面是定義了一個存儲過程,使用的時候用EXEC SQL FETCH c5 INTO :city,:flag,:accnum;也是執行的過程,>=是大於等於的意思
⑤ SQL就是C語言嗎兩者有什麼區別
不是,SQL是資料庫,C是編程語言。不是一個概念
⑥ 關於C語言連接SQL資料庫…
1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void main()
{
HENV henv; //環境句柄
HDBC hdbc; //數據源句柄
HSTMT hstmt; //執行語句句柄
unsigned char datasource[]="數據源名稱"; //即<a href="https://www..com/s?wd=ODBC&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">ODBC</a>源中設置的源名稱
unsigned char user[]= "用戶名"; //資料庫的帳戶名
unsigned char pwd[]= "密碼"; //資料庫的密碼
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //記錄各SQL函數的返回情況
// 分配環境句柄
retcode= SQLAllocEnv(&henv); // 等介於 SQLAllocHandle(SQL_HANDLE_ENV, SQL_<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>_HANDLE, &henv);
// 設置ODBC環境版本號為3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配連接句柄
retcode= SQLAllocConnect(henv,&hdbc); // 等介於 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
//直接連接數據源
// 如果是windows身份驗證,第二、三參數可以是<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>,也可以是任何字串
//SQL_NTS 即 "<a href="https://www..com/s?wd=Null&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">Null</a>-Terminated String"
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配語句句柄
retcode= SQLAllocStmt(hdbc,&hstmt); // 等介於 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//直接執行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數據緩沖區綁定資料庫中的相應欄位(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍歷結果集到相應緩沖區 queryData
SQLFetch(hstmt);
/*
*對遍歷結果的相關操作,如顯示等
*/
//注意釋放順序,否則會造成未知錯誤!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
代碼看上去很復雜,其實都可以直接復制。其中需要改的是數據源名稱、資料庫用戶名、資料庫密碼和SQL語句。
然後就是SQLFetch後得到結果集後,如何使用的問題了。
在下面的注釋部分 填寫你的處理代碼即可。
/*
*對遍歷結果的相關操作,如顯示等
*/
⑦ 什麼是C語言,SQL語言。那個更重要啊
要回答這個問題,首先要說到「面向過程的編程語言」、「面向對像的編程語言」、「結構化查詢語言」。
事實上這三種是完全不同的概念。舉個「1+1=2」這個等式的例子。「面向過程的編程語言」應理解為整個等式從形成到完成的過程,如1+1為什麼等於2,還有等於2的答案嗎?除了1+1還有沒有其它的方法,像0+2或0.5+1.5等等。說專業一點,學面向過程主要是學「演算法」以提高運算效率;「面向對像的編程語言」應理解為如何去把「1+1=2」這個等式「可視化」給大家看,也就是說這個等式是由五個「對像」:「1」、「+」、「1」、「=」和「2」組成。說專業一點,學面對像主要是從如何應用對像設計用戶界面學起;「結構化查詢語言」的理解最特別,對於我這個從面向過程學到面向對象的人剛開始很不適應。因為,它解決是等式完成的過程。你不需要理會這等式是怎麼形成和運算出來的,就是要它一個結果。如上面,你可以給電腦一個指令說,我要結果等於2.他就會把所以結果等於2的等式都給你。綜上所述,這三種語言都要學。面向過程是學演算法以提高效率,面向對像是學用戶界面的呈現,而結構化查詢是為了方便數據的處理。
⑧ 如何用C實現對SQL資料庫的操作
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "util.h" #include <sqlca.h>`` EXEC SQL INCLUDE SQLCA;main(){EXEC SQL BEGIN DECLARE SECTION; char firstname[13]; char userid[9]; char passwd[19]; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT TO sample; EXEC SQL SELECT FIRSTNME INTO :firstname FROM employee WHERE LASTNAME = 'JOHNSON'; printf( "First name = %s\n", firstname ); EXEC SQL CONNECT RESET;return 0;}上面是一個簡單的靜態嵌入SQL語句的應用程序。它包括了嵌入SQL的主要部分: (1)中的include SQLCA語句定義並描述了SQLCA的結構。SQLCA用於應用程序和資料庫之間的通訊,其中的SQLCODE返回SQL語句執行後的結果狀態。 (2)在BEGIN DECLARE SECTION和END DECLARE SECTION之間定義了宿主變數。宿主變數可被SQL語句引用,也可以被C語言語句引用。它用於將程序中的數據通過SQL語句傳給資料庫管理器,或從資料庫管理器接收查詢的結果。在SQL語句中,主變數前均有「:」標志以示區別。 (3)在每次訪問資料庫之前必須做CONNECT操作,以連接到某一個資料庫上。這時,應該保證資料庫實例已經啟動。 (4)是一條選擇語句。它將表employee中的LASTNAME為「JOHNSON」的行數據的FIRSTNAME查出,並將它放在firstname變數中。該語句返回一個結果。可以通過游標返回多個結果。當然,也可以包含update、insert和delete語句。 (5)最後斷開資料庫的連接。 從上例看出,每條嵌入式SQL語句都用EXEC SQL開始,表明它是一條SQL語句。這也是告訴預編譯器在EXEC SQL和「;」之間是嵌入SQL語句。
⑨ c語言怎麼使用sql觸發器
c語言怎麼使用sql觸發器:
定義: 何為觸發器?在SQL Server裡面也就是對某一個表的一定的操作,觸發某種條件,從而執行的一段程序。觸發器是一個特殊的存儲過程。
常見的觸發器有三種:分別應用於Insert , Update , Delete 事件。
我為什麼要使用觸發器?比如,這么兩個表:
Create Table Student( --學生表
StudentID int primary key, --學號
....
)
Create Table BorrowRecord( --學生借書記錄表
BorrowRecord int identity(1,1), --流水號
StudentID int , --學號
BorrowDate datetime, --借出時間
ReturnDAte Datetime, --歸還時間
...
)
用到的功能有:
1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);
2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄。
等等。
這時候可以用到觸發器。對於1,創建一個Update觸發器:
Create Trigger truStudent
On Student --在Student表中創建觸發器
for Update --為什麼事件觸發
As --事件觸發後所要做的事情
if Update(StudentID)
begin
Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted臨時表
Where br.StudentID=d.StudentID
end
理解觸發器裡面的兩個臨時的表:Deleted , Inserted 。注意Deleted 與Inserted分別表示觸發事件的表「舊的一條記錄」和「新的一條記錄」。
一個資料庫系統中有兩個虛擬表用於存儲在表中記錄改動的信息,分別是:
虛擬表Inserted 虛擬表Deleted
在表記錄新增時 存放新增的記錄 不存儲記錄
修改時 存放用來更新的新記錄 存放更新前的記錄
刪除時 不存儲記錄 存放被刪除的記錄
一個Update 的過程可以看作為:生成新的記錄到Inserted表,復制舊的記錄到Deleted表,然後刪除Student記錄並寫入新紀錄。
對於2,創建一個Delete觸發器
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Delted d
Where br.StudentID=d.StudentID
從這兩個例子我們可以看到了觸發器的關鍵:A.2個臨時的表;B.觸發機制。
⑩ c語言怎麼與SQL相連
先安裝SQL Server,在SQL Server中創建資料庫,然後編寫C代碼訪問SQL Server,即可實現相連。