ADO 查詢語句
顯示選定的數據
我們希望僅僅顯示 "Customers" 表的 "Companyname" 字段中以 A 開頭的記錄:
<html>
<body>
<%
set conn=*Object("*tion")
*er="*.4.0"
* "數據庫地址"
set rs=*Object("*set")
sql="SELECT username FROM user
WHERE username='可樂豬'"
* sql, conn
%>;不明白補充問我
ADO的sql語句和ODBC的有什么區別
ODBC和ADO區別、
ODBC(Open DataBase Connection)開放式系統互連,是一種數據庫訪問協議,提供了訪問數據庫的API接口。基于ODBC的應用程序,對數據庫操作不依賴于具體的DBMS,不直接與DBMS打交道,所有數據庫操作由對應DBMS的ODBC驅動程序完成,即:系統中不需要安裝DBMS系統,如SQL SERVER 2005,但必須有SQL SERVER 2005的ODBC驅動程序,然后在ODBC管理器中注冊數據源后,就可以在應用程序中通過ODBC API訪問該數據庫。
ODBC數據庫訪問技術只適用于windows系統,因為需要在ODBC驅動程序管理器中進行數據源注冊,而只有windows才集成了ODBC驅動程序管理器(“控制面板/管理工具/數據源”)。
ADO(ActiveX Data Object)具有跨系統平臺特性,它直接對DBMS數據庫進行操作,即系
統中必須有DBMS,但不需要驅動程序,不需要注冊數據源,所以具有很好的可移植性。
VC++6中這兩種技術所涉及到的MFC類:
MFC ODBC類包括CDatabase類 CRecordSet類 CRecoreView類 CFieldExchange類 CDBException類,具體說明請詳見任何一本講述數據庫編程技術的參考書。
ADO是data object,即數據對象的意思,先看一些它包括哪些常用對象:
Command對象 Connection對象 Error對象 RecordSet對象 Field對象 Parameter對象,對應到MFC ADO類,主要有_ConnectionPtr _RecordsetPtr等類。
基于ODBC和ADO的VC++應用程序設計概述
習慣上建立基于文檔視圖的應用程序時,使用ODBC訪問方法,創建應用程序時,需要在step 2 of 6 what database support would you like to include中選擇"database view with file support"加載你要訪問的數據庫,如果在此選擇None,后期編程載入數據庫相當麻煩,請注意。(如果一個數據庫中有多個表,可在此選擇一個表進行類定義,默認類名為"工程名+Set",可在應用程序創建完成前最后一步進行改名;然后在編程時建立其他基于CRecordSet的數據庫表類)
如果在step 2中設置訪問的數據庫和表,則在生成的應用程序框架的XXSet類中會自動加載對數據庫和表的連接訪問操作,當然你最好重新進行定義;系統只有在必要時才會調用GetDefaultConnection和GetDefaultSQL返回缺省的數據庫連接定義和SQL語句。
當然也可以建立基于對話框的數據庫訪問應用程序,思路差不多,請讀者自行參悟。
習慣上當建立基于對話框的應用程序時,選擇使用ADO技術。對于小程序,在StdAfx.h中引入ADO動態連接庫,在C***APP中應初始化COM庫環境,創建和關閉ADO連接。對于大型項目,通過自定義的ADOConnection類封裝數據庫操作的各種接口。
*語句
你的SQL語句中某些列名和SQL關鍵詞產生了沖突,比如time本身是一個函數名,你把它直接作為列名,系統就會產生混淆,不知道它究竟是函數還是列名。
強烈建議你不要直接用單純的英文單詞作為數據庫的表名或字段名(列名),這樣很容易造成歧義的,要和其他字母、數字或下劃線組合起來,比如可以是 mytime、time1、n_time等等(想想為什么其后的是*而不是*)。
另外,漢字也最好不要做表名或字段名,因為在某些系統或軟件是不支持漢字的(盡管這種可能性不是很高)。
如果非要這么做,那么你可以在這些容易造成歧義的名字兩邊加上方括號,比如:
update [日程安排] set [time]='" + * + "',[man]='" + * + "',[location]='" + * + "',[more]='" + * + "' where [Tittle]='" + str + "'"
ADO查詢語句,語句太長
建議:查看數據庫中表的結構,看表中每一屬性的數據類型性及長度大小。
看你更新或插入數據的時候時候出現了數據溢出,看是否又被截斷的可能。 另外加上如下代碼捕捉錯誤:try{ // 你的添加數據的代碼 ……………… } catch (CDaoException* e) { char buf[2048]; e-> GetErrorMessage(buf, 2048); e-> Delete(); ::AfxMessageBox(buf); } 然后看你的錯誤是什么就好辦了哈。
*連數據庫的語句名詞解釋的問題
第一個語句采用了SQL Server集成安全(Integrated Security=SSPI);第二句代碼采用明確的信任機制,使用用戶ID和密碼建立連接。
對比這兩個連接語句可以發現,采用SQL Server集成安全是連接到SQL Server數據庫的更可靠的方法,因為它不會在語句中保露用戶ID及密碼信息。Persist Security Info :是否支持安全信息(是否保存密碼)Integrated Security:用于指定采用的集成安全機制。
Initial catalog:用于指定要連接的數據庫名稱。--------------------------------關于SSPISSPI是Security Support Provider Interface(Microsoft安全支持提供器接口)的英文縮寫。
SSPI是定義得較全面的公用API,用來獲得驗證、信息完整性、信息隱私等集成安全服務,以及用于所有分布式應用程序協議的安全方面的服務。應用程序協議設計者能夠利用該接口獲得不同的安全性服務而不必修改協議本身。
SSPI是傳輸層應用程序和網絡安全服務提供器之間的Win32接口,其主要特性是使應用程序擁有了一個公用的API來使用不同的安全包,包括Windows NTLM驗證、SSL/PCT公用密鑰密碼技術提供器以及Windows 2000中的Kerberos安全驗證提供器。 應用程序開發者有權選擇直接調用SSPI函數來集成Windows NT安全性,或者使用基于DCOM、經驗證的RPC或者Winsock 2.0等更高級的應用程序接口。
Microsoft開發了新的基于接口規格的安全包來支持SSPI。Microsoft建議所有的基于Win32的應用程序開發者在進行安全分布式應用程序的開發時使用SSPI的集成安全特性。