一、adodb.connection的連線字串(connectionstring)的生成之道
ado是當前訪問資料庫的主流,但其connectionstring往往有一大串,並且在訪問不同的資料庫(如access和sql server),或訪問方式(通過odbc和ole db)不一樣時,其具體引數的設定差異很大,這給連線字串的編寫增加了一定的難度。這裡給大家介紹兩種生成connectionstring的方法,以便在沒有現成的資料可供參考時,寫出需要的連線字串。
方法一,使用adodc控制項的連線字串嚮導生成連線字串。
用vb新建一標準exe工程,先引用adodc部件(選選單[工程]/[部件...],在彈出的部件視窗中選microsoft ado data control),再將其加到form1上,預設名為adodc1;選中adodc1,在其上單擊右鍵,單擊「adodc屬性」,選「使用連線字串」,單擊「生成」按鈕,接下來根據該嚮導一步一步輸入各相關的連線資訊,「確定」後,在「使用連線字串」下面的文字框中就是我們需要的內容。
??方法二,呼叫ado連線視窗,獲得連線字串。
用vb新建一標準exe工程,引用microsoft ole db service component 1.0 type libary和microsoft activex data objects 2.x library
(具體操作與adodc的引用類似,只是通過選單[工程]/[引用...]選),加乙個textbox到form1,雙擊form1,進入code編輯區,清除vb自動生成的所有**,再輸入下述**:
option explicit
private sub form_load()
dim dltemp as msdasc.datalinks
dim cntemp as adodb.connection
set dltemp = new msdasc.datalinks
set cntemp = new adodb.connection
dltemp.promptedit cntemp
text1.text = cntemp.connectionstring
set dltemp = nothing
set cntemp = nothing
end sub
執行時會彈出乙個與adodc相似的生成連線字串的嚮導,輸入各相關資料,「確定」後在form1的text1中就得到我們需要的連線字串。
二、漢字亂碼問題
筆者曾經在使用ado向sql server 6.5中追加或修改資料後,發現查詢出來的漢字都是亂碼,最初以為是客戶端的環境有問題,後來開啟伺服器端的資料庫,發現其中的漢字也都是亂碼,費了九牛二虎之力才找到原因:在追加和修改的過程中,ado將字元進行了自動翻譯(autotranslate),翻譯後就成了亂碼(microsoft給我們開了乙個「小小」的玩笑),解決的辦法就是不讓它亂翻譯,具體操作如下:
如果ado通過ole db直接連線到資料庫,則在connection的connectionstring中加入字串:autotranslate=false;
如果ado通過odbc連線到資料庫,則在配置odbc時,將「執行字元資料轉換」一項的勾去掉。
三、在sql中處理含單引號的字串
vb在寫sql時,對字串資料都用單引號引起來,如:
select * from mytable where id='firstid'
若其中的firstid為first'id,即中間多出乙個單引號,則上述寫法將導致錯誤,解決的辦法是將字串中的每乙個單引號用兩雙引號替換,下面的函式strtosql完成該功能,並用單引號將處理後的字串引起來:
private function strtosql(byval strvalue as string) as string
strtosql = "'" + replace(strvalue, "'", "''") + "'"
end function
在寫sql時如有字串資料,不管其中有沒有單引號,都可以這樣使用:
strvalue="first'id"
strsql="select * from mytable where id="+strtosql(strvalue)
四、只返回查詢結果的前n個記錄
這是個老生常談的問題,稍有這方面經驗的人都會想到在sql中用"select top"語句來完成此功能,如訪問access資料庫時為:
select top 50 * from mytable
sql server 7.0和sql server 2000中都可以這樣,但在sql server 6.5中不行,它不支援"select top",筆者採用了乙個折衷的辦法,使用sql server 6.5的"set rowcount"來限制記錄數,例如:
myconnection.execute "set rowcount 50"
......'執行查詢
myconnection.execute "set rowcount 0"
最後一行表示取消記錄資料限制,這句千萬不能少,因為記錄數的限制在myconnection的生存期都有效,所以其它的查詢也會受此限制,最多隻返回50條記錄,筆者曾深受其害。
本文中涉及的內容的測試平台為visual baisc 6.0 enterprise+service pack 4。
SQL資料庫設計的幾點心得
資料庫設計階段可以說是以後整個系統效能的關鍵階段,在這個階段,幾乎包含所有效能調優的過程。在資料庫設計完成後,可以進行初步的索引設計,好的索引設計可以指導編碼階段寫出高效率的 為整個系統的效能打下良好的基礎。以下是效能要求設計階段需要注意的 1 資料庫邏輯設計的規範化 資料庫邏輯設計的規範化就是我們...
談談VB的資料庫程式設計方式
談談 vb的資料庫程式設計方式 vb全稱visual basic,是微軟公司推出的基於basic語言的視覺化程式設計環境,以其簡單易學功能強大而倍受廣大電腦愛好者的青睞。vb的資料庫程式設計方面按其難易程度可分為三類 由易到難 使用資料庫控制項和繫結控制項 使用資料庫物件變數進行程式設計 直接呼叫o...
關於資料分析的幾點心得 維度 指標 KPI
1 看資料看維度 在對某一項業務或者業務的某個模組進行分析時,可以從大小兩個角度去切入分析。首先站在廣闊的視角去看待一些資料。比如對某個產品 消費品 就要分析在大環境下是乙個什麼樣的資料,如市場排名,市場占有率。還要記錄市場整體波動情況,競品的資料。這些一般可以通過第三方調研機構或者行業報告獲得。f...