posts - 40,  comments - 7,  trackbacks - 0
          關于ODBC數據源連接文本?

          ????????????  在《外部數據庫的連接原理》一講中我們說過,ODBC提供對多種數據庫的支持,如dBase、Access、MS?SQL?
          ????????????Server及Oracle,也就是說運用ODBC數據源中所提供的連接代碼,我們可以實現對多種數據庫的連接。以連接Access數據庫為例,ODBC數據源連接文本的格式是:
          ????????????  “Driver={數據庫驅動程序};Dbq=數據庫文件;”
          ????????????  在以上連接文本中,如果數據庫跟程序在同一目錄下,或者用變量DefaultDir指定了數據庫所在目錄,則數據庫文件可以不用全路徑名,如下即可:
          ????????????  “ODBC;DBQ=MSAccess.mdb;Driver={Microsoft?Access?Driver?(*.mdb)};”
          ????????????  如下也可:
          ????????????  “ODBC;DBQ=MSAccess.mdb;DefaultDir=d:\Downloads\e21;Driver={Microsoft?
          ????????????Access?Driver?(*.mdb)};”
          ????????????  如果數據庫跟程序不在同一目錄下,或者沒有用變量DefaultDir指定數據庫所在目錄,則數據庫文件需要用全路徑名,如下:
          ????????????  “ODBC;DBQ=E:\Quake?III?Arena\MSAccess.mdb;Driver={Microsoft?Access?
          ????????????Driver?(*.mdb)};”
          ????????????  以上所說的是連接Access數據庫的格式,那么連接其他數據庫的ODBC數據源連接文本又是怎樣的?連接不同類型的數據庫要使用不同的對應驅動程序,沒忘記吧!不同的驅動程序當然它們的參數組合也就不同了,每一種不同驅動程序都有其特定的的參數形式:?

          ????????????  ⑴、MS?Access?ODBC?DSNless?連接:
          ????????????  ☆、參數:Driver?設置值:{Microsoft?Access?Driver?(*.mdb)}
          ????????????  ☆、參數:Dbq?設置值:實際路徑文件名稱
          ????????????  ☆、例句:
          ????????????  “Driver={Microsoft?Access?Driver?
          ????????????(*.mdb)};Dbq=c:\somepath\dbname.mdb;Uid=Admin;Pwd=pass;?”
          ????????????  ⑵、dBase?ODBC?DSNless?連接:?
          ????????????  ☆、參數:Driver?設置值:{Microsoft?dBASE?Driver?(*.dbf)}
          ????????????  ☆、參數:Dbq?設置值:實際路徑文件名稱
          ????????????  ☆、例句:
          ????????????  “Driver={Microsoft?dBASE?Driver?
          ????????????(*.dbf)};DriverID=277;Dbq=c:\somepath\dbname.dbf;?”
          ????????????  ⑶、Oracle?ODBC?DSNless?連接:
          ????????????  ☆、參數:Driver?設置值:{Microsoft?ODBC?for?Oracle}
          ????????????  ☆、參數:Dbq?設置值:實際路徑文件名稱
          ????????????  ☆、例句:
          ????????????  “Driver={Microsoft?ODBC?for?
          ????????????Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass;?”
          ????????????  ⑷、MS?SQL?Server?DSNless?連接:?
          ????????????  ☆、參數:Driver?設置值:{SQL?Server};
          ????????????  ☆、參數:Server?設置值:服務器名稱
          ????????????  ☆、參數:Database?設置值:數據表名稱
          ????????????  ☆、參數:Uid?設置值:用戶名稱
          ????????????  ☆、參數:Pwd?設置值:密碼
          ????????????  ☆、例句:
          ????????????  “Driver={SQL?
          ????????????Server};Server=servername;Database=dbname;Uid=sa;Pwd=pass;?”
          ????????????  ⑸、MS?Text?Driver?DSNless?連接:?
          ????????????  ☆、參數:Driver?設置值:{Microsoft?Text?Driver?(*.txt;?*.csv)}
          ????????????  ☆、參數:Dbq?設置值:實際路徑文件名稱
          ????????????  ☆、例句:
          ????????????  “Driver={Microsoft?Text?Driver?(*.txt;?
          ????????????*.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,txt;Persist?Security?
          ????????????Info=False;?”
          ????????????  ⑹、Visual?Foxpro?DSNless?連接:
          ????????????  ☆、參數:Driver?設置值:{Microsoft?Visual?FoxPro?Driver}
          ????????????  ☆、參數:SourceType?設置值:DBC
          ????????????  ☆、參數:SourceDB?設置值:實際路徑文件名稱?
          ????????????  ☆、例句:
          ????????????  “Driver={Microsoft?Visual?FoxPro?
          ????????????Driver};SourceType=DBC;SourceDB=c:\somepath\dbname.dbc;Exclusive=No;”?

          ????????????  ⑺、MySQL?DSNless?連接:
          ????????????  ☆、參數:Driver?設置值:{mysql}
          ????????????  ☆、參數:database?設置值:數據表名稱
          ????????????  ☆、參數:uid?設置值:用戶名稱
          ????????????  ☆、參數:pwd?設置值:密碼
          ????????????  ☆、例句:?
          ????????????  “driver={mysql};?
          ????????????database=yourdatabase;uid=username;pwd=password;option=16386”
          ????????????*******************************************************************
          ????????????SQL語言簡介?

          ????????????  在上一講中我們介紹了連接外部數據庫的方法,那么連接之后怎樣對外部數據庫進行讀取、顯示、增刪、更新、查詢等操作呢?這些操作需要通過外部數據庫等對象調用SQL指令才能完成。
          ????????????  ㈠、什么是SQL語言
          ????????????  SQL(Structure?Query?Languge,結構化查詢語言)是一種數據庫專用的計算機語言,不管是Oracle、MS?
          ????????????SQL?
          ????????????、Access、MySQL或其他公司的數據庫,也不管數據庫建立在大型主機或個人計算機上,都可以使用SQL語言來訪問和修改數據庫的內容。雖然不同公司的數據庫軟件多多少少會增加一些專屬的SQL語法,但大體上,它們還是遵循ASNI(美國國家標準協會)制定的SQL標準。因為SQL語言具有易學習及閱讀等特性,所以SQL逐漸被各種數據庫廠商采用,而成為一種共通的標準查詢語言。只要你學會SQL,即可操作各種數據庫如Visual?
          ????????????Foxpro、Access、dBase等等。總之,SQL語言是各種數據庫都可以使用的數據庫查詢語言。
          ????????????  SQL語言不僅僅具有查詢數據庫的功能,而且可以對數據庫完成選取、增刪、更新與跳轉等各種操作。
          ????????????  ㈡、SQL語言的組成
          ????????????  SQL語言是由命令(函數)、子句、運算符、加總函數及通配符等組成,分述如下:
          ????????????  1、命令
          ????????????  SQL的命令可分成數據定義語言與數據操作語言,數據定義語言可用來建立新的數據庫、數據表、字段及索引等,本教程不予介紹;另一為數據操作語言,可用來建立查詢表、排序、篩選數據、修改、增刪等動作。數據定義語言命令常用的有選擇、添加、刪除和修改這四種:
          ????????????  ⑴、命令:SELECT
          ????????????  中文意思:選擇
          ????????????  說明:用于找出合乎條件的記錄
          ????????????  ⑵、命令:INSERT
          ????????????  中文意思:插入
          ????????????  說明:用于增加一筆記錄或合并兩個數據表
          ????????????  ⑶、命令:UPDATE
          ????????????  中文意思:更新
          ????????????  說明:用于更正合乎條件的記錄
          ????????????  ⑷、命令:DELETE
          ????????????  中文意思:刪除
          ????????????  說明:用于刪除合乎條件的記錄
          ????????????  2、子句
          ????????????  子句是用于設定命令要操作的對象(即參數),SQL所用的子句如下:
          ????????????  ⑴、子句:FROM?
          ????????????  中文意思:數據表
          ????????????  說明:用于指定數據表
          ????????????  ⑵、子句:WHERE
          ????????????  中文意思:條件
          ????????????  說明:用于設定條件
          ????????????  ⑶、GROUP?BY
          ????????????  中文意思:分組(合并)
          ????????????  說明:用于設定分組
          ????????????  ⑷、ORDER?BY
          ????????????  中文意思:排序
          ????????????  說明:用于設定輸出的順序及字段
          ????????????  3、運算符
          ????????????  子句參數中的運算符使子句構成不同的語法格式,如“字段1='100'”、“字段1>'100'”等。運算符又分邏輯運算符與比較運算符。
          ????????????  ◇邏輯運算符如下:
          ????????????  ⑴、運算符:AND
          ????????????  中文意思:并且
          ????????????  說明:邏輯且
          ????????????  ⑵、運算符:OR?
          ????????????  中文意思:或者
          ????????????  說明:邏輯非
          ????????????  ⑶、運算符:NOT
          ????????????  中文意思:取反
          ????????????  說明:邏輯非或邏輯反
          ????????????  ◇比較運算符如下:
          ????????????  ⑴、運算符:<?說明:小于
          ????????????  ⑵、運算符:≤?說明:小于等于
          ????????????  ⑶、運算符:≥?說明:大于等于
          ????????????  ⑷、運算符:>?說明:大于
          ????????????  ⑸、運算符:=?說明:等于
          ????????????  ⑹、運算符:<>?說明:不等于
          ????????????  ⑺、運算符:BETWEEN?說明:用于設定范圍?中文意思:在...之間
          ????????????  ⑻、運算符:LIKE?說明:用于通配設定?中文意思:如同
          ????????????  ⑼、運算符:IN?說明:用于集合設定?中文意思:在...之內
          ????????????  4、加總函數
          ????????????  加總函數常常運用在命令的參數中,如:“SELECT?SUM(數學),AVG(數學)?FROM?成績單”。
          ????????????  ⑴、加總函數:AVG?
          ????????????  中文意思:平均
          ????????????  說明:用于求指定條件的平均?
          ????????????  ⑵、加總函數:COUNT
          ????????????  中文意思:數量
          ????????????  說明:用于求指定的數量
          ????????????  ⑶、加總函數:SUM
          ????????????  中文意思:和
          ????????????  說明:用于求指定條件的和
          ????????????  ⑷、加總函數:MAX
          ????????????  中文意思:最大值
          ????????????  說明:用于求指定條件的最大值
          ????????????  ⑸、加總函數:MIN
          ????????????  中文意思:最小值
          ????????????  說明:用于求指定條件的最小值
          ????????????  5、通配符
          ????????????  ⑴、通配符:%?意義:任何長度的字符串(包括0)
          ????????????  ⑵、通配符:_?意義:下劃線表示任何一個字符
          ????????????  ⑶、通配符:[]?意義:中括號表示某個范圍內的一個字符
          ????????????  在下一講將說明SQL語言是怎樣把命令(函數)、子句、運算符、及加總函數等組合在一起的。

          ????????????*************************************************************************

          ????????????嵌入式SQL的應用?

          ????????????  SQL語句可以單獨在數據庫系統本身中執行,但如果運用在其他編程工具所編制的程序中,一般不能單獨執行,而要把SQL語句嵌入到高級語言(如易語言)中使用,通過高級語言的命令和方法來調用之,此時SQL稱為嵌入式SQL。調用SQL語句的程序稱為宿主程序,在易語言中一般是把SQL語句作為宿主程序的唯一參數來直接處理。嵌入式SQL在使用上有一些規定,在易語言中目前的版本規定如下:
          ????????????  ⑴、在程序中要區分SQL語句和宿主語言的語句。在易語言中好區分,因為SQL語句形式是英文的,而易語言是中文的,但在實際應用時仍然有可能會混亂,所以易語言要把SQL語句轉化為文本型才能調用,即嵌入式SQL語句兩邊要用雙引號來標示。
          ????????????  ⑵、允許SQL語句使用宿主程序的變量,但使用時要將宿主程序的變量跟外部數據庫中表格的字段名區別開來,區別方法如下:
          ????????????  ①、在易語言中要將變量類型轉化為文本型變量才能被SQL文本相加使用,比如下面的例子中有一個叫“數字1”的整數類型變量,插入到SQL文本中是這樣表達:
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?”?+?組合框1.內容?+?“=”?+?到文本?(數字1))
          ????????????  ②、包含字段名的SQL文本兩邊加雙引號,變量名不能在雙引號內,如上例。
          ????????????  ⑶、要將字段名跟字段值區別開來,區別方法如下:
          ????????????  ①、對于文本類型的字段,在其字段值兩邊要加上“'”號標示其文本值,代表語法是:字段名稱=‘文本值’。如下:
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?姓名='山大王'”)
          ????????????  又如下面“查找編輯框.內容”中的字段值是文本型,嵌入式SQL語句如下:
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?姓名==”?+?“'”?+?查找編輯框.內容?+?
          “'”)
          ????????????  ②、對于數字類型的字段,在SQL語句中表示其字段值,兩邊不加符號標示,代表語法是:字段名稱=數字值。如下兩例:
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?”?+?組合框1.內容?+?“=”?+?查找編輯框.內容)?
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?學號=17”)
          ????????????  ③、對于日期時間類型的字段,在其字段值兩邊要加上“#”號標示其時間值,代表語法是:字段名稱=#時間值#。如下兩例:
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?入學時間?BETWEEN?#2001-01-01#?and?
          ????????????#2002-01-01#”)
          ????????????  外部數據庫1.查詢?(“select?*?from?chj?where?”?+?組合框1.內容?+?“=”?+?“#”?+?
          ????????????查找編輯框.內容?+?“#”)
          ????????????  ④、也可以將SQL語句中的字段名(尤其是中文名)可用中括號括住,如:[字段名]。
          ????????????  
          ????????????  ⑷、SQL語句要用半角輸入法輸入,否則可能會出錯。
          ????????????  那么在易語言中怎樣調用SQL語句呢?一般是在外部數據庫對象(控件)的方法中調用,試概括如下:
          ????????????  ⑴、對外部數據庫進行查詢的方法。
          ????????????  對外部數據庫的查詢就是在對外部數據庫不加編輯改動的前提下,只通過記錄集來對數據庫進行顯示、查詢、篩選、排序和記錄集的合并等操作。
          ????????????  所有查詢類的方法起源于下面這個語句,其他查詢類語句是對這個語句的調用(將此語句作為唯一的參數),該語句如下:
          ????????????  外部數據庫.查詢?(查詢類SQL語句)
          ????????????  也可這樣表達:
          ????????????  外部數據庫.查詢?(“SELECT...FROM...[WHERE]...[GROUP?BY]...[ORDER?BY]...?”)
          ????????????  該方法是對當前被打開數據庫進行數據查詢,返回的結果稱為“記錄集句柄”(即記錄集的標記)。注意當不再使用此記錄集時,必須使用“關閉記錄集”將其關閉,如果失敗,返回0。在易語言中,將以上語句等同于記錄集句柄以作為其他查詢類語句的參數。為了使該參數在所有子程序中都能應用,我們一般把它設置為整數型全局變量,并將其值設置如下:
          ????????????  記錄集句柄=外部數據庫.查詢?(查詢類SQL語句)
          ????????????  由于易語言要把SQL語句轉化為文本型才能調用,所以嵌入式SQL語句兩邊要有雙引號,例句:
          ????????????  記錄集句柄?=?外部數據庫1.查詢?(“select?*?from?chj?”)
          ????????????  ※?“chj”是外部數據庫中一個表的名稱
          ????????????  又如,欲得到排序的記錄集,應象下面這樣賦值:
          ????????????  記錄集句柄?=?外部數據庫1.查詢?(“SELECT?*?FROM?chj?ORDER?BY?語文?DESC”)
          ????????????  現將外部數據庫控件中其他的查詢類方法列舉如下:
          ????????????  ①、外部數據庫.重新查詢?(記錄集句柄)?即:
          ????????????  外部數據庫.重新查詢?(外部數據庫.查詢?(查詢類SQL語句))
          ????????????  例句:外部數據庫1.重新查詢?(外部數據庫1.查詢?(“select?*?from?chj?”))?
          ????????????  ②、外部數據庫.首記錄前?(記錄集句柄)?即:
          ????????????  外部數據庫.首記錄前?(外部數據庫.查詢?(查詢類SQL語句))
          ????????????  例句:外部數據庫1.首記錄前?(記錄集句柄)
          ????????????  ③、外部數據庫.尾記錄后?(記錄集句柄)
          ????????????  ④、外部數據庫.到首記錄?(記錄集句柄)
          ????????????  ⑤、外部數據庫.到尾記錄?(記錄集句柄)
          ????????????  ⑥、外部數據庫.到前一記錄?(記錄集句柄)
          ????????????  ⑦、外部數據庫.到后一記錄?(記錄集句柄)
          ????????????  ⑧、外部數據庫.讀?(記錄集句柄,字段名稱或位置)
          ????????????  例句:語文編輯框.內容?=?到文本?(外部數據庫1.讀?(記錄集句柄,?“語文”))
          ????????????  ⑵、對外部數據庫進行編輯的方法。
          ????????????  所謂對外部數據庫的編輯,就是變更改動外部數據庫本身,包括添加、更新、刪除等,對數據庫進行編輯不必通過記錄集。所有非查詢類SQL語句都嵌入下面這個語句來執行:
          ????????????  外部數據庫.執行?(非查詢類SQL語句)
          ????????????  ①、添加記錄,其語法如下:
          ????????????  外部數據庫.執行?(“insert?into?表名稱(字段1,字段2...)?values?(字段值1,字段值2...)?”)
          ????????????  例句:
          ????????????  外部數據庫1.執行?(“INSERT?INTO?chj?”?+?“(學號,姓名,語文,數學,英語)”?+?“?valueS?”?+?
          ????????????“(”?+?學號編輯框.內容?+?“,'”?+?姓名編輯框.內容?+?“','”?+?語文編輯框.內容?+?“','”?+?
          ????????????數學編輯框.內容?+?“','”?+?英語編輯框.內容?+?“')”)
          ????????????  ②、更新記錄,其語法如下:
          ????????????  外部數據庫.執行?(“UPDATE?表名稱?SET?字段1=字段值1,字段2=字段值2...WHERE?條件式”)?
          ????????????  例句:
          ????????????  外部數據庫1.執行?(“UPDATE?chj?SET?學號=”?+?“'”?+?學號編輯框.內容?+?“',”?+?“姓名=”?
          ????????????+?“'”?+?姓名編輯框.內容?+?“',”?+?“語文=”?+?“'”?+?語文編輯框.內容?+?“',”?+?“數學=”?
          ????????????+?“'”?+?數學編輯框.內容?+?“',”?+?“英語=”?+?“'”?+?英語編輯框.內容?+?“'?”?+?“WHERE?
          ????????????姓名=”?+?“'”?+?姓名1?+?“'?”?+?“AND?語文=”?+?語文1?+?“AND?數學=”?+?數學1?+?“AND?
          ????????????英語=”?+?英語1?+?“AND?學號=”?+?學號1)
          ????????????  ③、刪除記錄,其語法如下:
          ????????????  外部數據庫.執行?(“DELETE?*?FROM?表名稱?WHERE?條件式”)
          ????????????  例句:
          ????????????  外部數據庫.執行?(“外部數據庫1.執行?(“DELETE?*?FROM?chj?”?+?“WHERE?姓名=”?+?“'”?+?
          ????????????姓名1?+?“'?”?+?“AND?語文=”?+?語文1?+?“AND?數學=”?+?數學1?+?“AND?英語=”?+?英語1?+?
          ????????????“AND?學號=”?+?學號1)”)
          posted on 2007-01-19 12:17 Lansing 閱讀(1625) 評論(3)  編輯  收藏 所屬分類: SQL

          FeedBack:
          # re: 關于ODBC數據源連接文本
          2007-01-21 22:44 | blackbat
          問問樓主~~~ 這歌叫什么呀 挺好聽的 呵呵·~~!~!~!  回復  更多評論
            
          # re: 關于ODBC數據源連接文本 [未登錄]
          2007-01-22 15:20 | lansing
          “坐在巷口的那對男女”呵呵 @blackbat
            回復  更多評論
            
          # re: 關于ODBC數據源連接文本
          2013-07-28 09:40 | 棱語明
          在安裝jetspeed的時候修改了數據庫為mysql,jetspeed安裝完成,但是打開在打開jetspeed的網頁http://localhost:8080/出現這個怎么辦
          Error IDHJKQLNVYMessagejava.sql.SQLException: No suitable driverPath/jetspeed/ui

          Click here to go back to the previous
          page.

          Server Status
          Free Memory (KB)12672Total Memory (KB)149568  回復  更多評論
            
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          歡迎探討,努力學習Java哈

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Lansing's Download

          Lansing's Link

          我的博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 衡水市| 富民县| 射阳县| 渝北区| 镇江市| 滕州市| 扶沟县| 武川县| 陇南市| 四平市| 德令哈市| 安康市| 湘潭市| 潼关县| 莱西市| 海南省| 五原县| 禹城市| 特克斯县| 莆田市| 百色市| 加查县| 彭泽县| 石棉县| 阳泉市| 岢岚县| 安远县| 塔河县| 郁南县| 云安县| 通江县| 南雄市| 武宣县| 南平市| 闵行区| 叶城县| 永寿县| 涟源市| 兴城市| 元谋县| 尉氏县|