⑴ 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,否則可能會出錯。
⑵ DB2 SQL0956C 問題
db2 => ? sql0956c
SQL0956C 資料庫堆中沒有足夠的存儲器可用來處理語句。
說明:
使用了資料庫的所有可用內存。
不能處理該語句。
用戶響應:
接收到此消息時,終止應用程序。
增大資料庫配置參數 dbheap 的值以允許更大的資料庫堆。如果 I/O 伺服器數接
近最高限制,那麼減小此數目可能也會有所幫助。
如果 dbheap 資料庫配置參數已設置為 AUTOMATIC,您將需要增大
DATABASE_MEMORY 資料庫配置設置的值,或者增大 INSTANCE_MEMORY 資料庫管理
器配置設置的值。
更新配置參數時,建議更改這些參數的值。每次將它們增大當前大小的 10%,直
到錯誤情況得到解決為止。要更改 dbheap,請輸入一個類似如下的命令,該命令
對資料庫 樣本 將 dbheap 設置為 2400:
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
要在已與資料庫斷開連接的情況下更改 dbheap,請輸入一個類似如下的命令:
db2 CONNECT RESET;
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
如果所有相關聯的配置參數都設置為 AUTOMATIC 或 COMPUTED,那麼實例的內存
需求將超過機器上配置的內存量。可以採用的解決方案包括減少資料庫工作負載
、啟用連接集中器功能部件或者向機器添加更多內存。
sqlcode: -956
⑶ db2 SQL1390C 環境變數 db2instance未定義
解決方法:
1.在運行中輸入"CMD",進入命令窗口
2.輸入如下命令:db2icrt db2
3.輸入如下命令:set db2instance=db2
⑷ sql資料庫置疑,錯誤代碼926,請問要如何修復
請輸入你的答案...
資料庫926錯誤解決方案在做任何操作前首先備份資料庫的數據文件和日誌文件!以及最新的備份文件!第一種解決方法:先刪除報錯資料庫,再新建一同名資料庫,然後暫停Service
manager(及sql
server
服務)
,刪除庫文件和日誌文件再啟動Service
manager
,使用單數據文件恢復資料庫命令恢復資料庫。例:打開sql
server/tools/sql
server
query
analyzer
執行下面操作
EXEC
sp_attach_single_file_db
@dbname
=
'pubs',
@physname
=
'c:\mssql7\data\pubs.mdf'
說明:『pubs』為要恢復的資料庫名稱,『c:\mssql7\data\pubs.mdf』為要恢復的資料庫的庫文件的具體路徑和文件名稱。再重新啟動一下service
manager
,看能否正常打開處理後的資料庫;如果不可以再使用第二種方案。第二種解決方法:打開sql
server/tools/sql
server
query
analyzer
執行下面操作
USE
MASTER
GO
sp_configure
'allow
update',1
RECONFIGURE
WITH
OVERRIDE
GO
UPDATE
sysdatabases
set
status
=
32768
WHERE
name
=
'db_pos363'
GO
sp_configure
'allow
update',0
RECONFIGURE
WITH
OVERRIDE
GO
說明:'db_pos363'是要修復的資料庫名稱。執行完畢再重啟一下Service
manager打開資料庫看是否處於緊急狀態!再從另一裝有sql
2000的機器上連接報錯的資料庫,然後再在sql
2000的機器上新建一資料庫,再使用sql
2000自帶的資料庫導入導出功能(在新建的資料庫上單擊右鍵/所有任務/數據導入、數據導出)從報錯資料庫導入數據到新建的資料庫中!在導入選項中注意以下幾項:
1,
導入方式選擇分『從源資料庫復製表和視圖』以及『從sql
server資料庫間復制對象和數據』。當選擇從源資料庫復製表和視圖時一定要選擇全部表!
2,
當選擇『從sql
server資料庫間復制對象和數據』時,在『導入導出向導』對話框中去除『使用默認選項』的選中標志;再在打開『選項』對話框,去除以下三項的選中標志。A,復制數據用戶和資料庫角色;B,復制sql
server
登陸;C,復制對象及許可權。
3,
在使用『從sql
server資料庫間復制對象和數據』時,有時會出現單張表導入失敗,這時有時會在導入結束時提示那幾張表導入失敗有時不提示,如果提示,就再使用『從源資料庫復製表和視圖』並選中導入失敗的表重新導入一遍;如果不提示就只能在一張張表打開查看了,發現空表後再使用『從源資料庫復製表和視圖』導入需要導入的表!導入成功後再刪除sql
server
7.0機器上處於緊急狀態的資料庫,再新建一個同名資料庫,建好後再使用sql
2000的資料庫導出功能導出到此資料庫中,在導出過程中同樣要注意導入時的注意事項!
⑸ sql時間差小於4小時
SQL查詢時間間隔需求:
1、將操作時間與當前時間做對⽐,時間顯⽰規則如下:
a、時間差≤1⼩時,顯⽰「剛剛」
b、1⼩時<時間差≤24⼩時,顯⽰「N⼩時前」,N代表時間數劃算成⼩時單位的整數部分;
c、時間差>24⼩時,顯⽰「N天前」,N代表時間數換算成天單位的整數部分
select
case
when TIMESTAMPDIFF(MINUTE, t1.update_date, now()) <= 60
then '剛剛'
⑹ 資料庫標准語言SQL和C語言、C++語言的關系是什麼
沒有直接關系。 SQL語句可以嵌入到C或C++中,實際上,即使是這種嵌入,他們也和C和C++沒什麼直接關系。 這些SQL語句最終還是要傳到資料庫引擎里,由資料庫引擎完成相關操作。
⑺ SQL就是C語言嗎兩者有什麼區別
不是,SQL是資料庫,C是編程語言。不是一個概念
⑻ sql語言具有兩種使用方式分別稱為什麼
SQL語言具有兩種使用方式,分別稱為互動式SQL和A 提示式SQLB 多用戶SQLC 嵌入式SQLD 解釋式SQL分值: 2
⑼ 有關sql90說法正確的是
有關sql90說法正確的是SQL是一種結構化和過程化相結構的語言。sql90是C語言的一種表達。結構化語言是專門描述一個功能單元邏輯要求的。它不同於自然語言,也區別於任何特定的程序語言(VB、VC),是一種介於兩者之間的語言。