1. 嵌入式sql怎麼實現
C++ 本來就不識別SQL,要在C++里對SQL類的資料庫進行操作的正確做法的原理是:
1、使用控制項,向SQL類伺服器(比如MS SQL Server或Oracle,或最簡單的ACCESS資料庫)發送SQL語句,SQL類伺服器響應後就會針對語句的要求進行返回數據集或結果,控制項可以收到結果,然後進行展現或處理。
2、一般最常見的是ADO Data類的控制項,比如C++Builder里的ADOQUERY,ADODataset。又比如VC里的ADO Data控制項,等等。
3、想具體的學習如何進行SQL資料庫編程,可自個網路關鍵詞:「SQL資料庫編程」,或「C++Builder SQL資料庫編程 」。
2. 嵌入式sql和JDBC、ODBC什麼區別呢
初次接觸嵌入式資料庫(Embedded Database)可能對這個概念總不是很清楚,它究竟與資料庫伺服器(Database Server)有什麼區別,它們又分別適用於那些應用場景呢,這是需要解決的問題。
在談區別之前,先來個感性認識。像Oracle、Sybase、MySQL和SQL Server這些大家熟知的資料庫都屬於資料庫伺服器(當然不排除某些也提供嵌入式版本),而像SQLite、Berkeley DB等屬於嵌入式資料庫。
嵌入式資料庫跟資料庫伺服器最大的區別在於它們運行的地址空間不同。通常,資料庫伺服器獨立地運行一個守護進程(daemon),而嵌入式資料庫與應用程序運行在同一個進程。
資料庫伺服器的架構如下:
圖中的資料庫客戶端通常通過資料庫驅動程序如JDBC、ODBC等訪問資料庫伺服器,資料庫伺服器再操作資料庫文件。
資料庫服務是一種客戶端伺服器模式,客戶端和伺服器是完全兩個獨立的進程。它們可以分別位於在不同的計算機甚至網路中。客戶端和伺服器通過TCP/IP進行通訊。這種模式將數據與應用程序分離,便於對數據訪問的控制和管理。
嵌入式資料庫架構如下:
嵌入式資料庫不需要資料庫驅動程序,直接將資料庫的庫文件鏈接到應用程序中。應用程序通過API訪問資料庫,而不是TCP/IP。因此,嵌入式資料庫的部署是與應用程序在一起的。比如常見的版本控制器SubVersion,它所用的嵌入式資料庫就是跟應用程序放在一起的。
資料庫伺服器和嵌入式對比如下:
(1)資料庫伺服器通常允許非開發人員(DBA,資料庫庫管理員)對資料庫進行操作,而在嵌入式數據中通常只允許應用程序對其進行訪問和控制。
(2)資料庫伺服器將數據與程序分離,便於對資料庫訪問的控制。而嵌入式資料庫則將數據的訪問控制完全交給應用程序,由應用程序來進行控制。
(3)資料庫伺服器需要獨立的安裝、部署和管理,而嵌入式數據通常和應用程序一起發布,不需要單獨地部署一個資料庫伺服器,具有程序攜帶性的特點。
從上面的對比可以看出,資料庫伺服器和嵌入式資料庫各自具有自己的特點,它們分別適用於不同的應用場景。
如果你要存儲的數據的訪問比較復雜,比如跨網路、復雜的訪問控制策略,又需要資料庫管理員經常進行管理和維護,那麼資料庫伺服器就非常適合你。
如果你要存儲的數據的訪問之需要應用程序控制即可,並且基本不需要人工干預,而且需要對數據的訪問簡單、快速有效,那麼嵌入式資料庫適合你。
另外,你是否有過這樣的情況:存儲的數據量不是很大,如果搞個一般的資料庫來感覺太浪費了,而且如果發布這個程序還非常麻煩,這時那些微小的嵌入式資料庫可能非常適合你(如某些電子郵件客戶端就採用的是嵌入式資料庫)。
3. 什麼是嵌入式sql應用程序
嵌入式SQL
語言是將
SQL語句
直接嵌入到程序的源代碼中,與其他
程序設計語言
語句混合.
嵌入式SQL的用途:它是資料庫應用程序的一種開發方法.是一種應用程序進行資料庫訪問時所採取的編程式
資料庫語言
.
4. 關於嵌入式SQL(初學)
你需要學的不是從資料庫的書中找
而是從c c++ 的函數庫或類庫中找執行sql功能的函數或類
比如說vc
中的
#include <sql.h>
#include <sqlext.h>
就是用來進行odbc資料庫操作的
你去查看相關的msdn幫助就行了
5. 資料庫(嵌入式SQL語句、游標)
http://202.207.212.6/bcnr/www/3f73.htm
http://202.207.136.30/sjkwz/htm/3.7.2.1.htm
http://www.cs.xmu.e.cn/ecation/fine_courses/database/%BE%AB%C6%B7%BF%CE%B3%CC%BD%A8%C9%E8%C4%DA%C8%DD/3_%CD%F8%C2%E7%B0%E6cai/content/3/3.7.2.htm
游標例子:
declare @a int,@b char(10),@c int,@d char(10)
--建變數
create table #tmp(id int,book char(10),price int, sid char(10))
--建臨時表
DECLARE boss1 CURSOR FOR SELECT * FROM abc order by id desc
--建游標(同時選出記錄結果集)
OPEN boss1 --打開游標
FETCH NEXT FROM boss1 INTO @a,@b,@c,@d --選第一條記錄寫入變數中
while(@@fetch_status=0) --當沒有到記錄集末尾時執行以下begine、end語句
begin
insert into #tmp values(@a,@b,@c,@d) --把選出變數插入臨時表
FETCH NEXT FROM boss1 INTO @a,@b,@c,@d --選下一條記錄
end
select * from #tmp
drop table #tmp
close boss1 關閉游標
deallocate boss1 刪除游標
6. 嵌入式SQL的預處理方式指什麼
嵌入式SQL實現時,採用預處理方式是識別出SQL語句,並處理成函數調用形式。
嵌入式SQL(英文: Embedded SQL)是一種將SQL語句直接寫入C語言,COBOL,FORTRAN, Ada等編程語言的源代碼中的方法。藉此方法,可使得應用程序擁有了訪問數據以及處理數據的能力。在這一方法中,將SQL文嵌入的目標源碼的語言稱為宿主語言。
在SQL標準的SQL86(1986年發布)中定義了對於COBOL, FORTRAN, PI/L等語言的嵌入式SQL的規范。在SQL89(1989年發布)規范中,定義了對於C語言的嵌入式SQL的規范。一些大型的資料庫廠商發布的資料庫產品中,都提供了對於嵌入式SQL的支持。比如Oracle, DB2等。
7. 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,否則可能會出錯。
8. vs2010 怎麼寫嵌入式sql
你說的是嵌入式開方法?安一個開發包 同步工具 開打vs 里 工具裡面有一個選項連接,選擇你的開發平台就ok了。
9. 嵌入式SQL語句與動態SQL語句的差別
從我接觸到得信息來看,嵌入式SQL是指固定寫死在程序中的SQL文,不論程序怎麼變化這個SQL文總是不會變。
但是動態SQL就不一樣了,他會隨著條件的變化而變化。
比如
如果 【SELECT COUNT(*) FROM USER_TABLES;】嵌入寫死在程序中這就叫嵌入式SQL。
如果【SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME=『變數』】這個就叫做動態SQL
個人愚見,希望對你有幫助。