使用多種資料庫 一 Access問題

2021-09-05 14:15:56 字數 1152 閱讀 5224

這個是ado oledb驅動的老問題了,傳入引數必須按sql中引數出現的順序,sql不會有這樣的問題。不過在ado.net下面,除了sqlserver就都難以 避免了,不過好在,一般使用框架時如果sql是由程式動態構造的一般不會出現引數順序不一致,我原來被這個問題折騰也是在測試用例中:)當時查了一下才發 現真的是乙個很早就廣為流傳的問題了,並且不是bug,而是因為oledb支援通用的db,但有很多db本身識別引數的時候不按名稱只按順序的,所以也是 沒辦法的。

其實還有另乙個問題:

在sqlserver中:select * from table where param1 = @p1 and param2 = @p2 and param3 = @p1

@p1=1

@p2=2

是完全沒問題的

但是如果對oledb驅動就不行了,必須以三個引數對待,同樣是因為oledb只按引數索引順序,不按名稱來為引數賦值。

談到sql語法差異,我再說兩點access和sqlserver中的不同,希望對你所有幫助:

乙個是access不支援select top 0 from table這樣的語句,注意top後面的數字不能是0,如果大於0沒問題,但是sqlserver下是沒問題的。發現這個問題是在我的乙個基於**生成的 框架中自動通過形如select columns from table這樣的簡單語句為每個實體類生成形如select top ... where not in (select top ...)...這樣的通用分頁查詢語句,當區第一頁資料的時候,not in 後面的top 中,將會是0,這時access就會報錯,所以最後對取第一頁的情況我只能區別對待。

再乙個是像select * from (select * from table)這樣的語法,在access下沒問題,在sqlserver下則必須在後面為動態表指定乙個別名語法才是正確的:select * from (select * from table) aliasname,aliasname可以是任意的單詞。之所以使用這樣的語句同樣是為了通過形如select columns from table這樣的簡單語句構造分頁語句時用來返回所有的記錄總數:select count(id) from (select columns from table),當然這樣是偷懶,效能上應該會有部分影響的,count的時候盡可能還是建議直接用select count(id) from table這樣的句法。

多種資料庫操作

using system using system.data using system.configuration using system.linq using system.web using system.web.security using system.web.ui using syste...

Java多種資料庫連線

jdbc odbc string driver sun.jdbc.odbc.jdbcodbcdriver string url jdbc odbc dbsource dbsource為資料來源名 string username username 使用者名稱 string password passw...

jmeter多種資料庫指令碼

可根據不同的查詢型別設定 jdbc請求中的 query type 一 單條查詢語句 query type select statement 二 多條查詢語句 包括增刪改查 query type callable statement 另外jdbc配置元件中的 database url末尾加上?allo...