嵌入式SQL的預處理方式
① C語言中使用嵌入式sql
嵌入式SQL程序的VC+SQL server 2000實現的環境配置
嵌入SQL的C應用程序具體到VC++6.0, SQL Server2000 下調試可分為五步:1、環境初始化;2、預編譯;3、編譯;4、連接;5、運行。下面就其中重要的的操作方法給以詳細說明。
1、環境初始化
(1) SQL Server2000為其嵌入式SQL提供了一此特殊的介面;默認的安裝方式沒有安裝這此介面;因此,需要把devtools.rar解壓到SQLServer的系統日錄下(即文件夾devtools中的所有文件);如果操作系統安裝在C盤,則SQL Server的系統目錄是C:\Program Files\Microsoft SQL Server。(或 在安裝Microsoft SQL Server 2000時選擇安裝Development Tools,為使用嵌入式SQL語言准備必要的頭文件和庫文件。)
( 2)初始化Visual C++ 6.0編譯器環境。在命令行方式下運行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL Server的預編譯環境。在命令行方式下運行文件:\Devtools\samples\esqlc\setenv.bat。
( 4) VC++6.0環境配置。具體配置分為如下三步[:
①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。將SQL server自帶的用於資料庫開發的頭文件包含到工程環境中。
②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。將開發用到的包包含到工程中。
③project->Settings->Link->Object/Library Moles,添加庫文件:SQLakw32.lib, Caw32.lib。這兩個文件之間用空格分開。
2、預編譯
C語言編譯程序不能識別應用程序中的SQL語句,需要經過預處理程序將其轉換成C語句。SQL Server的預處理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安裝日錄的MSSQL\Binn下。若SQL Server資料庫採用的是默任安裝方式,則需要把binn.rar的內容拷貝到指定目錄下。
Microsoft SQL Server 2000提供的預編譯程序nsqlprep.exe,用於對嵌入式SQL程序進行預編譯處理,生成C語言源程序.實際上就是將嵌入式SQL程序中的嵌入式SQL語句替換為對運行時庫文件Sqlakw32. dll的函數調用,接著運行時庫文件調用動態連接庫Ntwdblib. dll通過網路來存取Microsoft SQL Server 2000資料庫伺服器.
預編譯程序nsqlprep的常用語法為:
nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
其中ESQL_File是要預編譯的嵌入式SQL程序;/SQLACCESS通知nsqlprep自動地為嵌入式SQL程序中的靜態SQL語句創建相應的存儲過程;/DB server_name.database_name指明要連接的伺服器以及資料庫名稱;/PASS login.password給出登錄名及相應的口令.
下面的程序demo.sqc實現了從資料庫伺服器hushaobo的資料庫pubs中的authors表中讀取au_lname為white的人對應的 au_fname 值,並保存到變數first_name 中顯示出來。(連接資料庫的用戶為sa,對應密碼為1982)
#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION;
char first_name[40];
char last_name[]="White";
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO hushaobo.pubs
USER sa.1982;
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;
EXEC SQL DISCONNECT ALL;
printf("first name: %s \n",first_name);
}
在命令行下運行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
則生成demo.c,將該文件添加到VC工程中編譯即可。
3、編譯,連接與運行
在VC++6.0中創建一個 "WIN32 Console Application"的Proiect,然後將預編譯生成的c文件加入Proiect,編譯連接即可生成訪問SQL Server的可執行程序。 Visual C++ 6.0進行編譯連接時需要用到動態鏈接庫SQLakw32.d11與SQLaiw32.d11;盡管這兩個文件已經隨同binn.rar被拷貝到SQLServer安裝目錄的MSSQL\Binn文件夾下,但仍然需要把它們的路徑加到系統路徑變數中,以使得程序運行時能找到它們,具體添加方法如下:
方法1:把這兩個文件拷貝到操作系統目錄下的system32子目錄中。
方法2:我的電腦->屬性->高級->環境變數->path->編輯,在變數值中加入路徑值;新路徑與已有路徑間用;間隔。
注意調適程序時,文件名中不要包含cursor,否則可能會出錯。
② 關於嵌入式SQL(初學)
你需要學的不是從資料庫的書中找
而是從c c++ 的函數庫或類庫中找執行sql功能的函數或類
比如說vc
中的
#include <sql.h>
#include <sqlext.h>
就是用來進行odbc資料庫操作的
你去查看相關的msdn幫助就行了
③ 資料庫嵌入式sql編程,求解
題目沒有說明表之間的外鍵關系,那我就默認同名的列名是外鍵,不清楚你用的編程語言,所以我使用:input作為輸入變數
1
select Teacher.Tname,Teacher.Tage,Teacher.Tsex,Work.Salary from Teacher,Work,Department
where Teacher.Tno=Work.Tno and Department.Dno=Work.Dno
and Department.Tno=Teacher.Tno and Work.Salary>:input
2
update Work set Salary=:input from Teacher,Department
where Teacher.Tno=Work.Tno and Department.Dno=Work.Dno
and Department.Tno=Teacher.Tno and Work.Salary<:input
④ 嵌入式SQL的工作原理
提供對於嵌入式SQL的支持,需要資料庫廠商除了提供DBMS之外,還必須提供一些工具。為了實現對於嵌入式SQL的支持,技術上必須解決以下4個問題[1]: 1.宿主語言的編譯器不可能識別和接受SQL文,需要解決如何將SQL的宿主語言源代碼編譯成可執行碼;2.宿主語言的應用程序如何與DBMS之間傳遞數據和消息;3.如何把對數據的查詢結果逐次賦值給宿主語言程序中的變數以供其處理;4.資料庫的數據類型與宿主語言的數據類型有時不完全對應或等價,如何解決必要的數據類型轉換問題。 嵌入式SQL源碼的處理流程 為了解決上述這些問題,資料庫廠商需要提供一個嵌入式SQL的預編譯器,把包含有嵌入式SQL文的宿主語言源碼轉換成純宿主語言的代碼。這樣一來,源碼即可使用宿主語言對應的編譯器進行編譯。通常情況下,經過嵌入式SQL的預編譯之後,原有的嵌入式SQL會被轉換成一系列函數調用。因此,資料庫廠商還需要提供一系列函數庫,以確保鏈接器能夠把代碼中的函數調用與對應的實現鏈接起來。
⑤ 三級資料庫技術輔導第四講:SQL語言特點
結構化查詢語言這一名稱實際上有些不貼切。
首先,盡管查詢是設計SQL的最初目的,檢索數據也仍然是其最重要的功能之一,但SQL決不僅僅是一個查詢工具。SQL用於控制DBMS提供給用戶的所有功能,包括:
數據定義(Data definition):SQL可用於定義被存放數據的結構和組織,以及數據項之間的關系。
數據檢索(Data retrieval):SQL能使用戶或應用程序從資料庫中檢索數據並使用這些數據。
數據操縱(Data manipulation):用戶或應用程序通過SQL更改資料庫,如增加新數據,刪除舊數據,修改已存入的數據等。
存取控制(Access control):SQL可用來限制用戶檢索,增加和修改數據的許可權,一保護所存儲的數據不被非法存取。
數據共享(Data sharing):SQL可用於調整數據讓並發用戶共享,以保證用戶之間彼此不受影響。
數據完整性(Data integrity):SQL能對資料庫的完整性條件作出規定,以使其不會因為修改紊亂或系統出錯而被破壞。
第二,SQL並不是一種像COBOL,FORTRAN和C語言等那樣完整的計算機語言。SQL沒有用於條件測試的IF語句,沒有用於程序分支的GOTO語句,也沒有用於循環的DO或FOR語句。
確切地說,SQL是一種資料庫子語言(sublanguage)。也稱為第四代語言(4GL),一種非過程語言。
SQL語言簡潔,為完成其核心功能只用了6個動詞:SELECT、CREATE、INSERT、UPDATE、DELETE、GRANT(REVOKE)。
ANSI SQL的類型
目前的ANSI SQL標准認可四種SQL語句的方法。採用何種方法依賴於應用程序編程環境:
互動式SQL(Interactive SQL):類似於Forpro,以命令行形式執行SQL語句。
嵌入式SQL(Embedded SQL):通過在SQL語句前假如一個關鍵字來執行SQL語句。例如C中的EXEC SQL。
模塊SQL(Mole SQL):允許創建獨立於3GL源代碼的編譯SQL語句,然後把編譯好的目標模塊連入可執行程序。SQL模塊類似於Visual Basic代碼模塊,模塊中包含變數說明和用來容納查詢結果集合的臨時表,可以把變元值從3GL傳遞給SQL模塊說明的過程參數。在資料庫伺服器上執行預編譯查詢的存儲過程有許多與模塊SQL共同的性質。
動態SQL(Dynamic SQL):可以創建在編寫語句時無法預測其內容的SQL語句(前面的多緩神種SQL類型屬於靜態SQL類)。例如:讀者想設計一個可以針對多種數據擾毀虧庫處理查詢的Visual Basic應用程序。動態SQL可以以字元串形式向資料庫傳送查詢。例如,可以向資料庫傳送一個查詢並獲得詳細的信息,這些信息來自描述資料庫表及表中欄位的資料庫字典。在知道了資料庫結構之後,應用程序用戶可以創建向查詢添加正確欄位名的定製查詢。
SQL的作用
SQL本身不是一個資料庫管理系統,也不是獨立的產品。事實上,SQL是資料庫管理系統的余戚一個組成部分,是用戶和DBMS通信的語言和工具。
SQL有下列作用:
SQL是一種互動式查詢語言
SQL是一種資料庫編程語言
SQL是一種資料庫管理語言
SQL是一種客戶機/伺服器語言
SQL是一種分布式資料庫語言
SQL是一種資料庫網關語言
⑥ 使用SQL語言有哪兩種方式
使用SQL語言有兩種方式,它們是互動式和嵌入式。
SQL語言可直接以命令方式交互使用(互動式),也可嵌入到程序設計語言中以程序方式使用(嵌入式)。現有資料庫應用開發工具一般將SQL語言直接融入到自身的語言之中,使用起來更方便,這些使用方式為用戶提供了靈活的選擇餘地,盡管SQL的使用方式不同,但SQL語言的語法基本是一致的。
(6)嵌入式SQL的預處理方式擴展閱讀:
SQL的核心部分相當於關系代數,但又具有關系代數所沒有的許多特點,如聚集、資料庫更新等。它是一個綜合的、通用的、功能極強的關系資料庫語言。
盡管SQL的功能很強,但語言十分簡潔,核心功能只用了9個動詞。SQL的語法接近英語口語,所以,用戶很容易學習和使用;數據描述、操縱、控制等功能一體化。