精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

.net訪問PostgreSQL數(shù)據(jù)庫發(fā)生“找不到函數(shù)名”的問題追蹤

數(shù)據(jù)庫 其他數(shù)據(jù)庫 PostgreSQL
盡管PostgreSQL使用比較廣泛,但在國內(nèi)相關(guān)資料太少,我們在數(shù)據(jù)庫遷移的過程中,遇到了不少問題,比如我的上一篇文章PostgreSQL的.NET驅(qū)動程序Npgsql中參數(shù)對象的一個Bug 中關(guān)于“找不到函數(shù)名”的問題,解決起來比較“辣手”,可以使用“追蹤”來形容了。本篇繼續(xù)對這個問題進(jìn)行深入探究。

PostgreSQL是一個使用廣泛的免費(fèi)開源的數(shù)據(jù)庫,與MySQL比較,它更適合復(fù)雜的企業(yè)計算任務(wù),而MySQL在互聯(lián)網(wǎng)領(lǐng)域應(yīng)用更為廣泛,究其原因,可能是PostgreSQL擁有支持最多的數(shù)據(jù)類型,甚至包括數(shù)組類型,IP地址類型等,可以使用C,SQL,PL/Pgsql,Phython等多種方式編寫強(qiáng)大的自定義函數(shù),因此特別適合處理復(fù)雜的計算問題。如果想要將SqlServer數(shù)據(jù)庫遷移到其它類型的數(shù)據(jù)庫,PostgreSQL是比較好的選擇。

盡管PostgreSQL使用比較廣泛,但在國內(nèi)相關(guān)資料太少,我們在數(shù)據(jù)庫遷移的過程中,遇到了不少問題,比如我的上一篇文章PostgreSQL的.NET驅(qū)動程序Npgsql中參數(shù)對象的一個Bug 中關(guān)于“找不到函數(shù)名”的問題,解決起來比較“辣手”,可以使用“追蹤”來形容了。本篇繼續(xù)對這個問題進(jìn)行深入探究。

1,問題回顧:

 在上一篇文章中說到,有一個PostgreSQL函數(shù) updateattention ,它有一個自定義的函數(shù)參數(shù),下面是函數(shù)頭:

  1. CREATE OR REPLACE FUNCTION updateattention(dm citext)  
  2.   RETURNS void AS 
  3. $BODY$  
  4. --函數(shù)體略  

參數(shù)dm 的類型是citex,一個自定義的數(shù)據(jù)類型,使用它來作為函數(shù)參數(shù)或者變量的類型,在進(jìn)行數(shù)據(jù)查詢的時候可以不區(qū)分大小寫,它的定義是:

  1. CREATE OR REPLACE FUNCTION citext(character)  
  2.   RETURNS citext AS 
  3. 'rtrim1' 
  4.   LANGUAGE internal IMMUTABLE STRICT  
  5.   COST 1;  
  6. ALTER FUNCTION citext(character) OWNER TO postgres;  

下面是調(diào)用使用C#調(diào)用updateattention存儲過程的代碼:

  1. //獲取PostgreSQL的數(shù)據(jù)訪問對象  
  2. PWMIS.DataProvider.Data.AdoHelper db = MyDB.GetDBHelperByConnectionName("PostgreSQL");  
  3. //獲取PostgreSQL的參數(shù)對象  
  4. IDataParameter para = db.GetParameter();   
  5. para.ParameterName = "@dm";  
  6. para.DbType = DbType.AnsiString;  
  7. para.Value = "KF0355";  
  8. db.ExecuteNonQuery("updateattention",  
  9.                 System.Data.CommandType.StoredProcedure,  
  10.                 new System.Data.IDataParameter[] { para });  

程序使用PDF.NET(PWMIS數(shù)據(jù)開發(fā)框架)的數(shù)據(jù)訪問對象AdoHelper來進(jìn)行相關(guān)的數(shù)據(jù)訪問操作,它采用反射工廠模式,根據(jù)系統(tǒng)的配置實例化具體的數(shù)據(jù)訪問類,這里使用的是PostgreSQL數(shù)據(jù)訪問類。

運(yùn)行該程序,出現(xiàn)下面的錯誤:

  1. PDF.NET AdoHelper 查詢錯誤:  
  2. DataBase ErrorMessage:ERROR: 42883: function updatefundattention(text) does not exist  
  3. SQL:updatefundattention  
  4. CommandType:StoredProcedure  
  5. Parameters:  
  6. Parameter["@jjdm"]    =    "KF0355"              //DbType=String  

PDF.NET框架內(nèi)置了日志對象和異常對象,它能夠為你拋出詳細(xì)的錯誤信息。

 2,問題聚焦

一開始還以為是函數(shù)名大小寫的問題,仔細(xì)核對后發(fā)現(xiàn)沒有問題,然后嘗試對代碼進(jìn)行仔細(xì)排查。

將上面的程序中第6行代碼

  1. para.DbType = DbType.AnsiString; 

注釋掉,程序運(yùn)行通過,懷疑參數(shù)類型不能夠設(shè)置成AnsiString,設(shè)置成下面的方式:

  1. para.DbType = DbType.String;  

程序依然運(yùn)行不通過,拋出上面同樣的錯誤,只有將這行代碼注釋掉才可以允許通過,思索很久仍然沒有結(jié)果,于是昨天寫了本文開頭說的那篇文章(PostgreSQL的.NET驅(qū)動程序Npgsql中參數(shù)對象的一個Bug)。

今天再次將目光聚集在錯誤信息的函數(shù)參數(shù)上:

updatefundattention(text)

難道PostgreSQL的數(shù)據(jù)類型text 對應(yīng)的.NET程序類型既不是String,也不是AnsiString?

又搜索了下,在http://npgsql.projects.postgresql.org/docs/manual/UserManual.html 找到了一張數(shù)據(jù)類型對照表:

Supported data types

Npgsql supports the following data types:

Postgresql Type NpgsqlDbType System.DbType Enum .Net System Type
int8 Bigint Int64 Int64
bool Boolean Boolean Boolean
Box, Circle, Line, LSeg, Path, Point, Polygon Box, Circle, Line, LSeg, Path, Point, Polygon Object Object
bytea Bytea Binary Byte[]
date Date Date DateTime, NpgsqlDate
float8 Double Double Double
int4 Integer Int32 Int32
money Money Decimal Decimal
numeric Numeric Decimal Decimal
float4 Real Single Single
int2 Smallint Int16 Int16
text Text String String
time Time Time DateTime, NpgsqlTime
timetz Time Time DateTime, NpgsqlTimeTZ
timestamp Timestamp DateTime DateTime, NpgsqlTimestamp
timestamptz TimestampTZ DateTime DateTime, NpgsqlTimestampTZ
interval Interval Object TimeSpan, NpgsqlInterval
varchar Varchar String String
inet Inet Object NpgsqlInet, IPAddress
(there is an implicity cast operator to convert NpgsqlInet objects into IPAddress if you need to use IPAddress and have only NpgsqlInet)
bit Bit Boolean Boolean, Int32
(If you use an Int32 value, odd values will be translated to bit 1 and even values to bit 0)
uuid Uuid Guid Guid
array Array Object Array
In order to explicitly use array type, specify NpgsqlDbType as an 'OR'ed type: NpgsqlDbType.Array | NpgsqlDbType.Integer for an array of Int32 for example.

可以看到 數(shù)據(jù)庫的text 類型是可以對應(yīng).net程序的String類型的,看來問題的關(guān)鍵的確是函數(shù)參數(shù)類型問題

為了驗證這個想法,將函數(shù)的參數(shù)類型改為Varchar類型:

  1. CREATE OR REPLACE FUNCTION updateattention(dm varchar)  
  2.   RETURNS void AS 
    • $BODY$  
    • --函數(shù)體略

再次運(yùn)行前面說的.net數(shù)據(jù)訪問程序,運(yùn)行通過!

故此得到結(jié)論:

PostgreSQL數(shù)據(jù)庫的函數(shù)中使用“自定義數(shù)據(jù)類型”,在.NET程序可能無法設(shè)置正確的DbType,從而出現(xiàn)找不到函數(shù)名的錯誤!

3,“靈異現(xiàn)象”分析

前面說,將

 para.DbType = DbType.AnsiString;
代碼注釋即可,也就是不對NpgsqlParameter.DbType 設(shè)置任何值,那么DbType的缺省值是什么呢?

在VS2010的“即時窗口”打印了一下未設(shè)置值的para.DbType,發(fā)現(xiàn)它的值是:

String

由于上一篇文章已經(jīng)驗證Npgsql的參數(shù)對象DbType無論怎么設(shè)置,獲取該屬性值的時候都是String,所以還是無法得知它的默認(rèn)屬性值是什么。

于是一個很偶然的念頭出現(xiàn):

NpgsqlParameter對象的默認(rèn)值是不是Object類型?

另外我們的函數(shù)使用了自定義的citext類型,所以很可能需要使用DbType.Object類型。

重新修改代碼成下面的方式:

  1. //獲取PostgreSQL的數(shù)據(jù)訪問對象  
  2. PWMIS.DataProvider.Data.AdoHelper db = MyDB.GetDBHelperByConnectionName("PostgreSQL");  
  3. //獲取PostgreSQL的參數(shù)對象  
  4. IDataParameter para = db.GetParameter();   
  5. para.ParameterName = "@dm";  
  6. para.DbType = DbType.Object;  
  7. para.Value = "KF0355";  
  8. db.ExecuteNonQuery("updateattention",  
  9.                 System.Data.CommandType.StoredProcedure,  
  10.                 new System.Data.IDataParameter[] { para });  

運(yùn)行程序,正常通過,看來問題找到了,就是它,在PostgreSQL的自定義類型函數(shù)參數(shù)中,.net程序的存儲過程調(diào)用參數(shù)應(yīng)該設(shè)置成 DbType.Object!

原文鏈接:http://www.cnblogs.com/bluedoctor/archive/2011/05/19/2051271.html

【編者推薦】

  1. 通用權(quán)限管理設(shè)計之?dāng)?shù)據(jù)庫結(jié)構(gòu)設(shè)計
  2. PostgreSQL的.NET驅(qū)動程序Npgsql中參數(shù)對象的一個Bug
  3. SQL Server表最小行的一個糾結(jié)問題
  4. 云端數(shù)據(jù)庫:微軟SQL Azure及其應(yīng)用場景
  5. SQL點(diǎn)滴之收集SQL Server線程等待信息

 

責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2010-03-08 09:43:50

.NET應(yīng)用訪問數(shù)據(jù)庫

2010-05-20 14:52:42

MySQL數(shù)據(jù)庫

2010-06-07 15:09:44

訪問MySQL數(shù)據(jù)庫

2019-11-20 09:08:46

PostgreSQL數(shù)據(jù)庫

2010-06-28 13:45:16

SQL Server

2021-04-09 21:07:07

Oracle數(shù)據(jù)庫謂詞

2010-05-24 17:42:44

MySQL數(shù)據(jù)庫

2009-10-28 16:47:26

VB.NET訪問數(shù)據(jù)庫

2010-06-10 10:57:57

2010-06-11 13:22:32

2009-12-24 10:37:03

ADO.NET訪問數(shù)據(jù)

2009-12-23 15:53:36

ADO.NET訪問數(shù)據(jù)

2017-09-07 15:42:25

MySQL數(shù)據(jù)庫訪問

2009-11-13 15:45:54

ADO.NET數(shù)據(jù)庫訪

2022-10-12 13:33:25

PostgreSQL數(shù)據(jù)庫

2010-05-26 10:15:11

MySQL數(shù)據(jù)庫

2010-05-13 14:27:52

訪問MySQL

2009-12-21 16:36:08

ADO.Net數(shù)據(jù)庫

2024-03-04 10:48:15

PostgreSQL數(shù)據(jù)庫

2009-11-11 11:33:08

VB.NET線程訪問數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲视频观看| 国产精品自在线拍| 亚洲精品成人悠悠色影视| 91免费版黄色| 无码视频在线观看| 天天综合久久| 精品亚洲夜色av98在线观看| 国产一级做a爰片久久| 亚洲图区一区| 国产欧美日本一区视频| 444亚洲人体| 69xxxx国产| 激情视频一区二区三区| 一区二区亚洲精品国产| 国模大尺度视频| 国产 日韩 欧美一区| 一区二区久久久| 午夜精品一区二区三区在线观看| 国产黄色小视频在线观看| 久久人人精品| 久久免费视频这里只有精品| 欧美aaa级片| 欧美亚洲色图校园春色| 在线不卡欧美精品一区二区三区| 亚洲午夜精品久久久久久人妖| 免费网站看v片在线a| 91免费视频网址| 97超级碰碰| 国产精品久久久久久久久久久久久久久久久久 | 国产乱人乱偷精品视频a人人澡| 亚洲人体偷拍| 欧美丰满少妇xxxxx| 制服丨自拍丨欧美丨动漫丨| 亚洲区小说区图片区qvod按摩| 日韩欧美一级二级三级| 午夜宅男在线视频| 精品欧美一区二区三区在线观看 | 欧美经典一区二区三区| 久久99精品久久久水蜜桃| 精品久久久久成人码免费动漫| 蜜臀精品久久久久久蜜臀 | 91在线高清观看| 91免费版黄色| 精品国产亚洲AV| 国模无码大尺度一区二区三区| 国产精品久久久久久婷婷天堂| 天海翼一区二区| 国产精品啊啊啊| 欧美不卡视频一区发布| 欧美xxxooo| 97精品视频在线看| 久久精品视频在线观看| 国精品人伦一区二区三区蜜桃| 欧美理论视频| 中文字幕av一区| www久久久久久久| 国产午夜一区| 一本久久综合亚洲鲁鲁| 日本人亚洲人jjzzjjz| 啪啪亚洲精品| 中文字幕精品一区二区精品| jizzjizz日本少妇| 午夜影院欧美| 久久777国产线看观看精品| 希岛爱理中文字幕| 欧美成人首页| 久久久久久久久久国产精品| 久久精品免费av| 国产精品三上| 国产精品极品美女在线观看免费| 中文字幕精品一区二区精| 麻豆91在线观看| 91在线|亚洲| 乱精品一区字幕二区| av不卡一区二区三区| 久久99精品久久久久久青青日本| 精品无人乱码| 中文字幕视频一区二区三区久| 99久久久无码国产精品性色戒| 三级资源在线| 高潮白浆女日韩av免费看| 国产天堂在线播放| 日韩护士脚交太爽了| 69成人精品免费视频| 中文字幕一区二区三区人妻在线视频 | 白浆在线视频| 日本韩国精品在线| 国产在线观看中文字幕| 欧美日韩一区二区三区在线电影 | 奇米在线7777在线精品| 91影视免费在线观看| 亚洲欧美色视频| 国产精品电影一区二区三区| 欧美久久在线观看| 电影亚洲精品噜噜在线观看| 日韩一区二区三免费高清| xfplay5566色资源网站| 日韩av二区| 久久久人成影片一区二区三区| 福利网址在线观看| 国产精品影视网| 激情小说综合区| 91ph在线| 欧美三级免费观看| 欧美国产在线一区| 免费久久久久久久久| 不卡av电影院| 亚洲中文无码av在线| 成人美女视频在线看| 亚洲三区视频| 成人短视频app| 欧美www视频| 五月婷婷六月香| 亚洲在线观看| 福利视频久久| 免费在线毛片| 亚洲r级在线视频| 波多野结衣免费观看| 国产一区国产二区国产三区| 国外成人在线直播| 国产视频手机在线观看| 中文字幕va一区二区三区| 农民人伦一区二区三区| 九九九九九九精品任你躁| 一本色道久久88精品综合| 99免费在线观看| 国产精品888| 中文字幕剧情在线观看一区| 桃花岛tv亚洲品质| 日韩国产欧美精品在线| 日本一区二区三区免费视频| 国产在线精品免费| 亚洲草草视频| 99久久精品一区二区成人| 日韩精品欧美国产精品忘忧草 | 国产精品对白一区二区三区| 国内外激情在线| 欧洲一区二区三区免费视频| 伊人网伊人影院| 亚洲欧美日本国产专区一区| 久久99精品久久久久久青青日本| 丁香花高清在线观看完整版| 日韩免费性生活视频播放| 日韩精品123区| 精品午夜一区二区三区在线观看| 亚洲精品一区二区三| 亚洲www啪成人一区二区| 亚洲色无码播放| av一级在线观看| 久久久影视传媒| 国产精品亚洲a| 色综合中文网| 日韩免费在线看| аⅴ资源新版在线天堂| 欧美性猛片xxxx免费看久爱| 亚洲av毛片基地| 免费欧美日韩国产三级电影| 一本一道久久久a久久久精品91| 国产精品久久久久久久久久齐齐| 一区二区三区日韩在线| 中文字字幕在线中文乱码| 中文字幕在线免费不卡| 日韩欧美中文在线视频| 国产精品va| 国产青春久久久国产毛片| 色资源二区在线视频| 国产亚洲欧美视频| 91一区二区视频| 一区二区三区在线播放| 国产美女视频免费观看下载软件| 国产精品日本欧美一区二区三区| 日产国产精品精品a∨| abab456成人免费网址| www.日韩免费| 丁香六月色婷婷| 色88888久久久久久影院按摩| 美国黄色特级片| 国产成人亚洲综合色影视| 男的插女的下面视频| 欧美女优在线视频| 91在线看www| 狠狠操一区二区三区| 伊人激情综合网| 精品国产乱码久久久久久蜜臀网站| 亚洲www啪成人一区二区麻豆| 丰满少妇高潮一区二区| 精品无码三级在线观看视频| 国产欧美日韩小视频| 国产不卡一区| yy111111少妇影院日韩夜片| 成人美女大片| 久久国产精品久久国产精品| 欧美日韩免费做爰大片| 制服丝袜成人动漫| 日韩精品1区2区| 最近日韩中文字幕| 国产精品无码网站| 国产在线精品视频| 国产免费成人在线| 91tv官网精品成人亚洲| 蜜桃传媒视频麻豆一区| 日韩精品一级| 国产精品亚洲美女av网站| wwww在线观看免费视频| 最近2019中文免费高清视频观看www99| 亚洲AV无码精品自拍| 在线观看一区不卡| 欧美亚韩一区二区三区| 亚洲欧洲综合另类在线| 90岁老太婆乱淫| 成人av在线电影| 日本高清免费在线视频| 日日夜夜免费精品| 欧美乱大交xxxxx潮喷l头像| 水蜜桃久久夜色精品一区| 鲁片一区二区三区| 136福利精品导航| 成人黄色在线免费| a成人v在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 91美女视频在线| 亚洲欧美制服第一页| 黄色www视频| 欧美一区中文字幕| 亚洲一区二区色| 在线看日韩精品电影| 久久久久久久黄色片| 亚洲一区av在线| 国产免费无码一区二区视频| 国产精品不卡一区| 超碰人人干人人| 国产视频一区在线观看| 人人妻人人澡人人爽人人精品| 成人激情免费电影网址| 男插女视频网站| 国产乱子伦一区二区三区国色天香| 色多多视频在线播放| 日韩黄色片在线观看| 成人一级片网站| 午夜亚洲激情| 国产精品视频一区二区三区四区五区| 亚洲日韩视频| 欧美一级视频免费看| 日韩亚洲国产精品| www在线观看免费| 国产亚洲一级| 黄色免费观看视频网站| 免费在线播放第一区高清av| 日本a级片免费观看| 久久aⅴ国产紧身牛仔裤| 日韩精品视频久久| 天堂久久一区二区三区| 日本成人黄色网| 麻豆精品视频在线观看| 欧美日韩精品区别| 国产剧情在线观看一区二区 | 成人黄色小视频在线观看| 在线播放av网址| 99久久er热在这里只有精品66| 欧类av怡春院| 久久久精品中文字幕麻豆发布| 免费一级特黄3大片视频| 亚洲国产激情av| 国产尤物在线播放| 亚洲综合一区二区精品导航| 久久精品女人毛片国产| 色综合久久综合| 亚洲综合视频在线播放| 日韩欧美一二三| 瑟瑟在线观看| 最近2019中文字幕第三页视频 | 欧美影院久久久| 亚洲四虎影院| 99精品国产高清在线观看| 九色丨蝌蚪丨成人| 三区精品视频观看| 亚洲国产精品综合久久久| 日韩精品在线中文字幕| 日韩国产欧美三级| 午夜av中文字幕| 99久久久无码国产精品| 国产探花视频在线| 亚洲高清免费视频| 国产一级片免费视频| 欧美一区二区久久久| 手机看片一区二区| 日韩亚洲欧美成人| 成人国产电影在线观看| 国产精品美女免费看| 亚洲一区二区三区日本久久九| 欧美精品与人动性物交免费看| 中文字幕免费一区二区| 免费大片在线观看| 国产精品小仙女| 色一情一交一乱一区二区三区| 一区二区三区高清| 国产精品成人无码| 精品国产在天天线2019| seseavlu视频在线| 97视频在线观看网址| 高清一区二区中文字幕| 欧美另类一区| 伊人激情综合| 久久久久xxxx| 久久久www免费人成精品| 久久97人妻无码一区二区三区| 欧美性生交片4| 日本福利片在线| 欧美激情一级精品国产| 国产毛片精品久久| 欧美精品一区三区在线观看| 亚洲性色视频| 日本特黄在线观看| 国产精品网站在线观看| 日韩一区二区视频在线| 欧美成人免费网站| 黄网站在线播放| 国产精品视频在线播放| 亚洲人成网77777色在线播放| www.成年人视频| 国产一区二区剧情av在线| 极品蜜桃臀肥臀-x88av| 日本韩国一区二区三区| 日韩精品视频无播放器在线看| 欧美日韩xxxxx| 国产精品一区二区美女视频免费看 | 亚洲无在线观看| 国产精品久久三| 亚洲av综合一区| 亚洲人a成www在线影院| 国产粉嫩在线观看| 国产欧美丝袜| 日韩一级欧洲| 熟妇人妻久久中文字幕| 亚洲福利视频一区二区| 国产91免费看| 欧美极品美女电影一区| 日韩在线成人| 国产性生活免费视频| 国产精一区二区三区| 超碰在线国产97| 欧美一区三区四区| 99福利在线| 99高清视频有精品视频| 欧美在线首页| 佐佐木明希电影| 香蕉乱码成人久久天堂爱免费| 免费观看黄色av| 88xx成人精品| 国产a久久精品一区二区三区 | 国产九色在线播放九色| 日韩av在线看| 丝袜美腿一区| 杨幂一区欧美专区| 国内精品久久久久影院一蜜桃| 破处女黄色一级片| 精品剧情在线观看| av剧情在线观看| 久久另类ts人妖一区二区| 久久av一区| 国产无遮挡在线观看| 欧美高清视频一二三区 | 天堂av网在线| 国产精品久久精品| 中文字幕一区二区三区欧美日韩 | 一二三四社区欧美黄| 亚洲美女性生活| 4p变态网欧美系列| 成人羞羞视频播放网站| 国产又粗又长又爽又黄的视频| 亚洲一区二区三区四区中文字幕| 无套内谢的新婚少妇国语播放| 国产精品1234| 888久久久| 你懂得在线视频| 欧美日韩综合不卡| 欧美人与性动交α欧美精品图片| 狠狠色狠狠色综合人人| 日韩福利视频网| 激情综合五月网| 亚洲午夜av电影| 清纯唯美激情亚洲| 黄色一级大片在线观看| 亚洲女与黑人做爰| 日夜干在线视频| 91视频国产精品| 亚洲欧美日韩综合国产aⅴ| www.xx日本| 日韩精品在线视频美女| www.成人| 无码人妻h动漫| 一区二区三区日韩欧美| 极品白浆推特女神在线观看| 亚洲伊人成综合成人网| 西西人体一区二区| 国产精品 欧美激情| 亚洲人成人99网站| 97se亚洲国产一区二区三区| 另类小说第一页| 午夜精品久久久久久久99水蜜桃|