一個基于ODBC的 應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對應(yīng)的DBMS的ODBC驅(qū)動程序完成。也就是說,不論是FoxPro、Access還是 Oracle數(shù)據(jù)庫,均可用ODBC API進行訪問。由此可見,ODBC的最大優(yōu)點是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。
特點:
ODBC技術(shù)以C\S結(jié)構(gòu)為設(shè)計基礎(chǔ),它使得應(yīng)用程序與DBMS之間在邏輯上可以分離,使得應(yīng)用程序具有數(shù)據(jù)庫無關(guān)性。ODBC定義了一個API,每個應(yīng)用程序利用相同的 源代碼就可以訪問不同的 數(shù)據(jù)庫系統(tǒng),存取多個數(shù)據(jù)庫中的數(shù)據(jù)。與嵌入式SQL相比,ODBC一個最顯著的優(yōu)點是用它生成的應(yīng)用程序與數(shù)據(jù)庫或數(shù)據(jù)庫引擎無關(guān)。
ODBC使應(yīng)用程序具有良好的互用性和可移植性,并且具備同時訪問多種DBS的能力,從而克服了 傳統(tǒng)數(shù)據(jù)庫應(yīng)用程序的缺陷。
1.敲完學(xué)生和機房后,只知道配置ODBC數(shù)據(jù)源是為了連接vb與SQL?實現(xiàn)vb與數(shù)據(jù)庫的完美交互,那么為什么要配置ODBC那:
]]>主要是方便管理
1?你肯定要鏈接數(shù)據(jù)庫
2?那么你肯定要用戶名和密碼
3?正式的數(shù)據(jù)庫和應(yīng)用服務(wù)器應(yīng)該是單獨的人員管理,而不是開發(fā)人員
4?密碼會定期修改
5?如果鏈接數(shù)據(jù)庫是各自書寫代碼和配置,則運行環(huán)境的密碼修改將會是一個噩夢,一不小心就忘記一個
6?所以,大家全部到一個數(shù)據(jù)源那里獲取連接。管理員只需要修改數(shù)據(jù)源的配置,而無需修改應(yīng)用的配置
7?如果數(shù)據(jù)庫的地址變更,則同樣不會影響到應(yīng)用,也只是修改數(shù)據(jù)源
8?開發(fā)人員無需知道正式數(shù)據(jù)庫的密碼
2.名詞解釋即用途
ODBC即OPEN?DATABASE?CONNECITON的縮寫,意為開放數(shù)據(jù)庫連接,是微軟提出的一種數(shù)據(jù)訪問的方法,只要數(shù)據(jù)庫提供了ODBC驅(qū)動程序,應(yīng)用程序就能以O(shè)DBC的方式訪問數(shù)據(jù)庫中的數(shù)據(jù)。
為了便于訪問數(shù)據(jù),WINDOWS系統(tǒng)提供了ODBC數(shù)據(jù)源管理工具,該工具用來設(shè)置數(shù)據(jù)源的名字
DSN(DATA?SOURCE?NAME)。所謂DSN只不過是一個數(shù)據(jù)源的標志,設(shè)置它的目的是便于應(yīng)用程序訪問數(shù)據(jù),也就是說,只要為某個數(shù)據(jù)庫設(shè)置了相應(yīng)的DSN,應(yīng)用程序就不必理會該數(shù)據(jù)庫存儲的位置和驅(qū)動程序,可以按DSN直接訪問數(shù)據(jù)庫。
DSN有三種類型:用戶DSN、系統(tǒng)DSN和文件DSN,下面分別講述這三種DSN。
用戶DSN??用戶DSN只對設(shè)置它的用戶可見,而且只能在設(shè)置了該DSN的機器上使用。
系統(tǒng)DSN??系統(tǒng)DSN對機器上的所用戶都是可見的,包括NT服務(wù)。文件DSN??將DSN的配置信息存在一個文件里,這樣的文件就叫文件DSN。
ODBC數(shù)據(jù)源全稱是開放數(shù)據(jù)庫互連(Open?Database?Connectivity),在微軟公司開放的數(shù)據(jù)庫結(jié)構(gòu)中的一部分,其實是一個應(yīng)用程序的接口,主要用于提供數(shù)據(jù)庫的編寫應(yīng)用程序的能力。
因為是微軟公司發(fā)布的軟件,ODBC也提供了SQL語句的支持,用戶可以通過ODBC提供的API接口來使用和調(diào)度ODBC驅(qū)動程序,然后ODBC驅(qū)動程序通過SQL語言與數(shù)據(jù)庫管理系統(tǒng)進行聯(lián)系。
? ??ODBC數(shù)據(jù)源在每臺計算機中基本都存在,以WindowsXP為例,打開控制面板—系統(tǒng)工具—數(shù)據(jù)源?(ODBC),很見到可以找到。雙擊打開ODBC數(shù)據(jù)源管理器,該管理器主要用于配置、添加、刪除各種不同的數(shù)據(jù)源,ODBC數(shù)據(jù)源對此專門進行了簡潔化,可以讓用戶更加方便的進行數(shù)據(jù)源的配置。
? ??下面介紹一下ODBC數(shù)據(jù)源管理器的主要功能:
? ??1、用戶DSN:ODBC用戶數(shù)據(jù)源存儲了如何與指定數(shù)據(jù)提供者連接的信息。用戶數(shù)據(jù)源只對當前的用戶可見,而且只能應(yīng)用在本機上。?
? ??2、系統(tǒng)DSN:ODBC系統(tǒng)數(shù)據(jù)源存儲了如何與指定數(shù)據(jù)提供者連接的信息。系統(tǒng)數(shù)據(jù)源對當前機器上的所有用戶可見。
? ??3、文件DSN:ODBC文件數(shù)據(jù)源允許用戶連接數(shù)據(jù)提供者。文件DSN可以由安裝了相同驅(qū)動程序的用戶共享。
? ??4、驅(qū)動程序:ODBC驅(qū)動程序允許那些支持ODBC的程序通過ODBC數(shù)據(jù)源獲取信息。如果安裝新的驅(qū)動程序,要使用其安裝程序。
? ??5、跟蹤:ODBC跟蹤允許創(chuàng)建調(diào)用ODBC驅(qū)動程序的日志,以供技術(shù)人員查看;也可以輔助調(diào)試應(yīng)用程序。Visual?Studio跟蹤啟動Microsoft?Visual?Studio的ODBC跟蹤。QTP要進行數(shù)據(jù)庫檢查點之前,需要先連接數(shù)據(jù)庫:
1.在控制面板-管理工具-數(shù)據(jù)源(ODBC)創(chuàng)建數(shù)據(jù)源。(windows要先安裝相應(yīng)的odbc驅(qū)動包)
2.在qtp中創(chuàng)建連接。
'定義一個變量
Dim Cnn
'創(chuàng)建一個ADODB對象,賦值給這個變量
Set Cnn =CreateObject("ADODB.Connection")
'連接指定的數(shù)據(jù)庫,用戶名密碼和數(shù)據(jù)源名稱(Data Source就是步驟一創(chuàng)建的數(shù)據(jù)源名稱)根據(jù)實際環(huán)境填寫
Cnn.ConnectionString="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;UserID=mibs;Password=mibs;Data Source=mibs71" ' oracle
Cnn.ConnectionString="Provider=MSDASQL.1;Password=db2inst1;Persist Security Info=True;User ID=db2inst1;Data Source=39_xbankred" ' db2
這次的主題就是上面的這個連接字符串,我為了找到這個連接字符串,發(fā)費了我半天時間,后來找到了一個很好的方法,就是讓它自動生成連接字符串,這樣就不怕因為數(shù)據(jù)庫的不同,連接字符串也不同了。方法如下:
1.新建一個文件,取名a.udl,后瑞是udl就行
2.雙擊打開該文件,彈出如下圖
3.選擇數(shù)據(jù)源名稱,輸入數(shù)據(jù)庫用戶和密碼,點擊確定按鈕,就自動生成連接字符串了。
或者你如果沒有事先建立數(shù)據(jù)源的話,也可以從【提供程序】開始,然后一步一步的按提示信息進行操作,最后測試一下是否能連接成功,然后點擊確定按鈕,就自動生成了。
這樣做的好處就是,效率高,而且一定能連接成功。并且適合各種數(shù)據(jù)庫的連接。
大概思路:詞語法分析生成語法樹、邏輯優(yōu)化、物理優(yōu)化、計劃執(zhí)行,其中 ast 使用Antlr
請問:
1、方向是否正確,有沒有更簡易的方法或者可以省略的步驟。
2、有沒有 gammar 文件供參考?
3、邏輯優(yōu)化 有沒有好的規(guī)則比較適用 ?
4、統(tǒng)計信息、代價評估、Plan的生成分別有哪些算法呢?
4、Plan的執(zhí)行控制該怎么做,這一塊的思路還是不清晰。作者:知乎用戶
鏈接:https://www.zhihu.com/question/26953411/answer/34681295
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。在幾年以前(哥年齡35+),我還在問老頭子什么叫“定語從句”,被鄙視。
老婆學(xué)日語的,每當我嘲笑她英語稀爛,她就考我英語語法,然后我只好嘲笑她Excel很爛了。
但這不影響我讀英文文檔,也不影響我應(yīng)聘某名聲還算過得去的外企PM崗位,他們也沒有發(fā)現(xiàn)我的英語實際上很“爛”并且把我fire掉。
怎么做到的?我準備把答案寫長點騙贊。這是一個如何依靠自學(xué)掌握計算機英語應(yīng)用能力的故事……不想看故事的,直接跳至答案尾部。
我父親是英語教師,這是我從小學(xué)不好英語的第一個原因。起因是初一時他閑得無聊,檢查我的英語學(xué)習(xí)情況,單詞orange我總是拼不對(天啊現(xiàn)在也沒拼對),然后就被實施家暴了,從此我拒絕他檢查或者輔導(dǎo)我的英語學(xué)習(xí)。
但是,我有一個好的英語啟蒙教師——初一的英語老師姓周,我對他感激涕零,他對教學(xué)投入和認真,對每一個學(xué)生都很用心,激發(fā)了我們學(xué)英語的興趣,并且教會了我學(xué)習(xí)英語的核心技能——國際音標,除了26個字母以外,這是我學(xué)的最扎實的英語知識了,這使我在查詞典后可以知道一個單詞可以怎么讀。我不止一次地設(shè)想過,如果初中一年級不是周老師教我英語,給了我學(xué)習(xí)計算機的最重要的工具,我的人生就會完全不同,稱得上是師恩如海。
我始終認為——學(xué)習(xí)英語最重要的是能開口讀,讀錯了也不要緊。讀句子有困難,那就從單詞開始。
現(xiàn)在的電子詞典、在線詞典都有真人語音可以跟著模仿,模仿的時候總結(jié)一下發(fā)音規(guī)律,在遇到新的單詞的時候先猜一猜它的讀音,再查詞典核實自己的猜測。
有了這個方法,長期積累,讀不成問題了。
初二的時候,換了一個美女老師。我不喜歡她的原因是她上課很無趣,現(xiàn)在想想大約是因為她沒有經(jīng)常表揚我,而且她講課的重點是語法,教學(xué)方法是不停重復(fù),給我留下語法恐懼癥。值得一提的是,初二的數(shù)學(xué)老師也不怎么喜歡我。
一個不被老師表揚的學(xué)生是沒有未來的,學(xué)校里的課程很無聊可是我還得天天去,總要給自己找點事做吧。這時我拿到一個CASIO計算器,型號是fx-3600,它有很多按鈕所以看上去很厲害的樣子,還有一本薄薄的說明書(英語+日語)。
為了使自習(xí)時間不那么無聊,我天天玩這個計算器,很快就玩膩了,因為高級的功能不會用。我決定把說明書看懂。對于一個學(xué)習(xí)英語一年左右的初中生來說,這樣的“專業(yè)文獻”自然是很難讀懂的,沒關(guān)系,時間我有的是。
一個笨辦法如果有效,那它就是個好辦法。
我的笨辦法就把說明書上的英文工整地抄寫在數(shù)學(xué)練習(xí)本上,然后用英漢詞典查每一個單詞的意思,試著把它翻譯出來。實在翻譯不出來的,對照日文版部分的漢字猜。漸漸地,查詞典的頻率沒有那么高了,因為這些詞之前都查過并且記住了,比如calculator,不需要再查了。
解壓上面兩個包,把解壓后的文件放在同一個目錄(合并),注意2個包解壓后的所有文件必須放在一個目錄下,假設(shè)是D:\\instantclient_11_2
使用管理員權(quán)限打開CMD,進入該目錄,運行odbc_install.exe進行安裝。
提示安裝成功后,運行64位ODBC驅(qū)動配置程序“C:\windows\SysWOW64\odbcad32.exe”
注意:64位系統(tǒng)的odbcad32.exe的目錄應(yīng)該在SysWOW64。
不出意外,ODBC的驅(qū)動已經(jīng)安裝成功了,打開ODBC數(shù)據(jù)源管理器就可以看到已經(jīng)有ODBC驅(qū)動程序項:
3.選擇ODBC配置DSN,如下圖,可以根據(jù)實際的情況天下Oracle ODBC Driver Configuration。
測試連接成功后,就可以使用ODBC連接數(shù)據(jù)庫了,Enjoy it!
加一句,我使用的ADO來封住ODBC連接。ODBC連接串測試成功和能夠使用的是:Provider=MSDASQL.1;Persist Security Info=False;User ID=avls;Password=1;Data Source=orcl;
還有發(fā)一個Oracle ODBC連接串匯總:http://www.connectionstrings.com/oracle/ ?那么多人貢獻真好!
再說一句:配置Oracle ODBC驅(qū)動必須需要配置環(huán)境變量,就是讓驅(qū)動能夠找到D:\instantclient_11_2\NETWORK\ADMIN ? 下面的tnsnames.ora ? ??tnsnames.ora文件包含了連接Oracle服務(wù)器的連接串;
只需要配置ORACLE_HOME環(huán)境變量的值為D:\instantclient_11_2即可。已經(jīng)經(jīng)過測試,嘻嘻。謝謝,不用夸獎,有用得很。
關(guān)于環(huán)境變量,還有一個需要進行配置的就是ODBC驅(qū)動的語言設(shè)置,NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK ? ?? ?目前測試可以解決SQL通過ODBC查詢中文亂碼的問題。