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

PostgreSQL的.NET驅動程序Npgsql中參數對象的一個Bug

數據庫 其他數據庫 PostgreSQL
最近將公司的項目從SqlServer移植到PostgreSQL數據庫上來,在調用數據庫的存儲過程(自定義函數)的時候,發現一個奇怪的問題,老是報函數無法找到。

最近將公司的項目從SqlServer移植到PostgreSQL數據庫上來,在調用數據庫的存儲過程(自定義函數)的時候,發現一個奇怪的問題,老是報函數無法找到。

先看一個PgSQL存儲過程:

  1. CREATE OR REPLACE FUNCTION updateattention(dm citext)  
  2. RETURNS void AS 
  3. $BODY$  
  4. DECLARE 
  5. BEGIN 
  6. update ZB set gzd=COALESCE(gzd,0)+1 where ZB.dm=$1 ;  
  7. END;  
  8. $BODY$  
  9. LANGUAGE plpgsql VOLATILE  
  10. COST 100;  
  11. ALTER FUNCTION updateattention(citext) OWNER TO postgres; 

在PostgreSQL中,函數和存儲過程沒有區別,這里我們把沒有返回值的函數叫做存儲過程吧,也許表訴的不太準確,還望大蝦指正。

上面定義一個存儲過程updateattention,它有一個自定義類型 citext,用于將字符串中類型換成不區分大小寫的類型,它的定義如下:

  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; 

下面是調用updateattention存儲過程的代碼:

  1. //獲取PostgreSQL的數據訪問對象  
  2. PWMIS.DataProvider.Data.AdoHelper db = MyDB.GetDBHelperByConnectionName("PostgreSQL");  
  3. //獲取PostgreSQL的參數對象  
  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數據開發框架)的數據訪問對象AdoHelper來進行相關的數據訪問操作,它采用反射工廠模式,根據系統的配置實例化具體的數據訪問類,這里使用的是PostgreSQL數據訪問類。

運行該程序,出現下面的錯誤:

PDF.NET AdoHelper 查詢錯誤:

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

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

如果采用下面的方式調用,又沒有問題:

  1. db.ExecuteNonQuery("select * from updateattention(@dm)",  
  2. System.Data.CommandType.Text,  
  3. new System.Data.IDataParameter[] { para }); 

------------------------------------------------------------------------------------

盡管該方式可以作為一種替代方案,但要用select * from 這種方式調用存儲過程,總覺得很別扭,還得找到問題的真正原因。

這個 "function ... does not exist" 的問題很難搜索,最終在國外找到一篇文章討論類似的問題:

http://pgfoundry.org/forum/forum.php?thread_id=637&forum_id=519

文中有人說,可能是參數的類型轉換問題,但我這里只是將參數進行了大小寫轉換,應該不會有類似Int32到Int64這類問題。

無賴,只有將調用存儲過程的.NET程序代碼一個一個排查,當注釋掉

para.DbType = DbType.AnsiString;

的時候,程序居然能夠正常運行通過了!

之前也曾經懷疑過是不是DbType的問題,但是當把鼠標放到VS2010的編輯器中para 對象下面的時候,智能提示顯示 DbType="{String}".

默認情況下,參數對象的DbType屬性值是

DbType.String

難道

DbType.AnsiString==DbType.String ??

看了一下定義,它們是有區別的,DbType.AnsiString表示非Unicode的變長字符串,DbType.String 表示Unicode的變長字符串。

一般情況下,ANSI編碼表示當前系統編碼,所以我猜想AnsiString在我的機器上是Gb2312編碼的,查了一下數據庫的編碼,它是UTF-8格式的,難怪難怪,PostgreSQL給我提示找不到 updatefundattention(text) 函數,注意下,實際上這個函數的參數不是text類型的,它實際上應該是 character 類型,PostgreSQL可以定義同名的函數,但函數可以有不同的參數類型,有點像C#的方法重載。

到此,問題似乎解決了,但還沒完:

VS2010的智能提示有Bug?

***次有這個念頭我都覺得不可思議,因為以前在VS2008的時候曾經調試過類似的代碼,趕緊將上面的.net代碼中的參數對象換成其它數據庫類型的參數對象試試看:

  1. //獲取PostgreSQL的數據訪問對象  
  2. PWMIS.DataProvider.Data.AdoHelper db = MyDB.GetDBHelperByConnectionName("PostgreSQL");  
  3. //使用 SqlServer 的參數對象  
  4. IDataParameter para = new SqlParameter();  
  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 }); 

再此將光標放到para.DbType 上,這次提示正確了,是“{AnsiString}”;

將上面的代碼放到VS2008中再次驗證,智能提示正確,看來不是VS2010的Bug,呵呵。

故此,得到的結論:

PostgreSQL的.NET數據訪問驅動程序的參數對象DbType屬性存在一個設置成AnsiString之后查看該屬性的結果卻是String的Bug!

PS:雖然查看屬性的確有這樣一個Bug,但好像程序內部做了正確的處理,要不我的程序最終是無法運行通過的。

后記

PostgreSQL的.NET數據驅動程序的這個問題引起的問題使得我困擾了2天左右的時間,不得不發帖說明一下這個過程,現在國內有關PostgreSQL的資料太少,寫點東西供大家參考一下。

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

【編者推薦】

  1. 思科推新數據中心解決方案支持SQL Server
  2. 數據庫日常維護常用的腳本部分收錄
  3. SQL Server表最小行的一個糾結問題
  4. 云端數據庫:微軟SQL Azure及其應用場景
  5. SQL點滴之收集SQL Server線程等待信息

 

 

責任編輯:艾婧 來源: 博客園
相關推薦

2011-05-31 10:38:14

PostgreSQL

2011-05-20 08:54:35

PostgreSQL

2017-10-24 17:03:48

Linux驅動程序編譯

2009-09-14 17:08:02

WebFormView

2015-08-24 10:07:13

程序員bug

2010-05-10 15:53:24

Unix系統

2018-08-29 13:33:02

Windows 10修復驅動程序

2011-01-06 16:29:08

linuxtasklet機制

2009-07-06 18:17:46

JDBC驅動程序

2013-10-31 16:29:10

Linux內核

2009-06-15 14:18:00

netbeans配置JDBC驅動程序

2022-03-08 09:25:52

數據庫系統MongoDB

2022-05-19 08:33:53

漏洞惡意軟件

2021-11-29 07:55:45

Linux GPIO Linux 系統

2021-05-06 13:45:54

漏洞網絡安全網絡攻擊

2025-02-13 07:00:00

Dubbo-goJava服務端

2009-11-04 13:14:59

Windows Emb驅動程序

2009-07-20 18:01:38

Oracle JDBC

2018-11-19 10:15:26

Windows 10WiFi驅動程序

2019-03-27 13:20:31

Windows 10更新驅動程序
點贊
收藏

51CTO技術棧公眾號

国产制服丝袜在线| 中文字幕日韩精品一区二区| 国产精品视频免费播放| 九九热线有精品视频99| 色婷婷精品久久二区二区蜜臀av| 婷婷四房综合激情五月| 国产精品国产三级国产aⅴ| 国产综合网站| 国产一区二区三区日韩欧美| 日韩av影视大全| 狠狠操一区二区三区| 国产亚洲成aⅴ人片在线观看| 国产区亚洲区欧美区| 久久这里只有精品免费| 视频一区中文| 日韩你懂的电影在线观看| 久久国产乱子伦免费精品| 黄网页在线观看| 99riav久久精品riav| 成人网中文字幕| 一级黄色在线视频| 黄色亚洲免费| 久久精品99国产精品酒店日本| 亚洲国产第一区| 国产精品3区| 欧美亚洲国产一区二区三区va | 中文av一区二区三区| free性欧美| 亚洲欧洲色图综合| 欧美精品一区在线| 亚洲精品喷潮一区二区三区| 秋霞午夜鲁丝一区二区老狼| 91国内精品久久| 国产三级国产精品国产国在线观看| 九一精品国产| 亚洲精品久久久久久久久久久久 | 成人美女视频在线观看18| 国产日韩欧美视频在线| 波多野结衣毛片| 一区二区三区四区五区精品视频| 欧美成人精品影院| 一级免费黄色录像| 欧美一二区在线观看| 日韩精品有码在线观看| a级片在线观看视频| 嫩呦国产一区二区三区av| 欧美日韩国产综合一区二区| 国内外免费激情视频| 台湾佬中文娱乐网欧美电影| 亚洲成人动漫在线观看| 欧美日韩黄色一区二区| av无码久久久久久不卡网站| av中文字幕在线播放| 中文字幕日韩一区二区| 亚洲精品在线免费看| 国产系列在线观看| 国产亚洲欧洲997久久综合 | 亚洲第一第二区| 精品一二三四在线| 国产在线a不卡| 亚洲中文字幕一区二区| 美女视频免费一区| 国产欧美精品久久久| 亚洲一区二区天堂| 国产伦精品一区二区三区视频青涩 | 少妇的滋味中文字幕bd| 日韩精品久久| 另类专区欧美制服同性| 日本黄色小说视频| 在线精品在线| 欧美一级在线亚洲天堂| 无码人妻久久一区二区三区 | 亚洲va在线va天堂va偷拍| 国产亚洲人成a在线v网站| 欧美体内she精视频| 国产喷水theporn| 96sao精品免费视频观看| 欧美一级理论片| 国产伦精品一区二区三区精品| 久久影院资源站| 亚洲人成电影网站色www| 无码人妻丰满熟妇啪啪欧美| 婷婷六月综合| 久久久久久亚洲精品中文字幕| 国产真实乱偷精品视频| 国产精品永久| 国产精品偷伦免费视频观看的| 国产毛片在线视频| thepron国产精品| 涩涩涩999| 婷婷av在线| 欧美日韩激情网| 亚洲一区二区三区四区五区xx| 亚洲伦理网站| 亚洲精品v天堂中文字幕| 免费观看a级片| 欧美激情1区2区3区| 777国产偷窥盗摄精品视频| 国产精品传媒在线观看| 国产精品夜夜爽| 久久偷窥视频| 麻豆av免费在线观看| 亚洲成人www| 一本岛在线视频| 国产精品久久久网站| 夜夜嗨av一区二区三区免费区| 中文字幕五月天| 久久激情视频| 99久久综合狠狠综合久久止| 蝌蚪视频在线播放| 一区二区三区高清| 中文字幕一区二区三区四区在线视频| 91精品导航| 播播国产欧美激情| 中文字幕在线播| 不卡一二三区首页| 色香蕉在线观看| 欧美色片在线观看| 亚洲精品suv精品一区二区| 欧美精品久久久久久久久46p| 久久国产99| 国产高清不卡av| 国产美女在线观看| 在线观看国产一区二区| 中文字幕 日本| 午夜精品久久久久99热蜜桃导演 | 精品国产亚洲一区二区三区在线 | 一区精品久久| 91色视频在线导航| 成人午夜电影在线观看| 精品美女永久免费视频| 亚洲av综合色区无码另类小说| 欧洲激情综合| 欧美有码在线视频| 免费观看a视频| 一区二区国产视频| 捷克做爰xxxⅹ性视频| 色777狠狠狠综合伊人| 日本一区二区三区在线播放| 免费观看黄色av| 一个色综合av| 日本中文字幕有码| 欧美全黄视频| 亚洲自拍小视频免费观看| 亚洲麻豆精品| 欧美日韩不卡在线| 亚洲aaa视频| 久久精品国产亚洲aⅴ| 日韩久久久久久久| 韩日精品一区| 日韩在线免费高清视频| 中文字幕一区二区三区波野结| 久久精品欧美一区二区三区不卡| 日本www在线播放| 亚洲精华一区二区三区| 欧美亚洲在线观看| 看电影就来5566av视频在线播放| 91成人国产精品| 日本免费www| 麻豆91在线播放免费| 一区二区在线中文字幕电影视频| 免费日韩成人| 美日韩在线视频| 亚洲av无码专区在线| 亚洲第一狼人社区| 日本黄色网址大全| 免费精品99久久国产综合精品| 曰韩不卡视频| 精品一区二区三区中文字幕在线| 欧美日本中文字幕| 日批免费在线观看| 色婷婷综合中文久久一本| 伊人影院综合网| 精品亚洲aⅴ乱码一区二区三区| 国产日韩欧美大片| 精品午夜电影| 国产成人免费91av在线| 日本欧美在线视频免费观看| 日韩视频在线你懂得| 日本污视频在线观看| 2024国产精品| 中文字幕第17页| 亚洲高清电影| 日韩欧美激情一区二区| 国产精品中文| 57pao精品| 天堂中文8资源在线8| 精品国产人成亚洲区| 中文字幕高清在线免费播放| 欧美激情中文字幕一区二区| 秋霞午夜鲁丝一区二区| 亚洲中字黄色| 艳母动漫在线免费观看| 午夜a一级毛片亚洲欧洲| 国产精品久久久久一区二区 | 欧美一区二区三区精品电影| av亚洲在线| 精品久久久久一区| 日本丰满少妇做爰爽爽| 亚洲一区中文在线| 级毛片内射视频| 国产69精品久久久久777| 无码人妻丰满熟妇区毛片18 | 僵尸世界大战2 在线播放| 欧美最新另类人妖| 国产亚洲情侣一区二区无| 欧美高清免费| 91av在线视频观看| 超碰最新在线| 尤物九九久久国产精品的特点| 亚洲AV无码精品色毛片浪潮| 欧美在线free| 国产成人在线观看网站| 最新中文字幕一区二区三区| 制服丝袜第二页| 国产成人亚洲综合a∨猫咪| 亚洲免费看av| 免费视频一区二区三区在线观看| 男女激烈动态图| av一区二区高清| 精品一区二区视频| 999久久久久久久久6666| 成人黄色在线播放| 欧美va视频| 日本免费久久高清视频| 超黄网站在线观看| 九九久久久久久久久激情| 啊v在线视频| 亚洲欧美色图片| 香港三日本三级少妇66| 精品欧美一区二区久久| 国产免费黄色录像| 911国产精品| 在线观看国产小视频| 色婷婷亚洲综合| av中文在线播放| 午夜国产不卡在线观看视频| 欧美成人精品一区二区免费看片| 国产精品福利影院| 手机看片日韩av| 国产日韩欧美不卡| 性欧美精品中出| 国产亚洲欧美中文| 国产美女永久免费无遮挡| 91久色porny| 一区二区三区免费在线观看视频| av一区二区三区四区| wwwxx日本| heyzo一本久久综合| 久久久久成人精品无码中文字幕| 成人免费视频一区| 91丝袜在线观看| 97国产一区二区| 中文字幕丰满孑伦无码专区| 99re免费视频精品全部| 免费看毛片的网站| 99精品久久99久久久久| aaaaa一级片| 久久久久高清精品| 日韩黄色中文字幕| 国产精品国产自产拍高清av王其| 911国产在线| 亚洲手机成人高清视频| 丰满少妇高潮久久三区| 亚洲精品视频一区| 久久久久久久久久99| 亚洲成人午夜影院| 狠狠躁夜夜躁人人爽天天高潮| 精品av在线播放| 成人免费视频国产免费| 欧美三级日本三级少妇99| 一区二区视频网| 日韩一区二区三区电影在线观看| 成人福利小视频| 亚洲精品动漫100p| 国产毛片av在线| 精品国偷自产在线| 国产乱妇乱子在线播视频播放网站| 午夜免费在线观看精品视频| 电影一区二区三| 国产精品亚洲自拍| 精品久久国产一区| 国产精品区一区| 国产一区日韩| 亚洲国产精品女人| 亚洲美女少妇无套啪啪呻吟| 88av.com| 国产成人免费视频一区| 色婷婷av777| 亚洲激情图片qvod| 无码人妻精品一区二区50| 欧美妇女性影城| 香蕉国产在线视频| 日韩亚洲一区二区| 2018av在线| 国产欧美一区二区三区久久| jizz性欧美23| 亚洲三区在线| 野花国产精品入口| 日本美女视频一区| 久久一夜天堂av一区二区三区| 99自拍视频在线| 欧美小视频在线| 朝桐光av在线一区二区三区| 一区二区三区视频免费在线观看| 九色91在线| 成人免费大片黄在线播放| 在线成人动漫av| 日韩精品视频在线观看视频| 久久精品二区亚洲w码| 日本少妇色视频| 亚洲免费在线播放| 波多野结衣高清视频| 亚洲黄页视频免费观看| av免费在线观看网址| 国产精品久久久久久久久久久新郎 | 欧美大黑bbbbbbbbb在线| 国产v片免费观看| 国产乱对白刺激视频不卡 | 亚洲色图在线视频| 午夜视频网站在线观看| 亚洲精品动漫久久久久| 女人黄色免费在线观看| 国产日本欧美视频| 国产精品嫩模av在线| 国产原创popny丨九色| 国产一区二区在线观看视频| 蜜桃传媒一区二区亚洲| 疯狂做受xxxx欧美肥白少妇| 亚洲精品网站在线| 久久久精品国产网站| 福利视频亚洲| 日本一区二区在线| 亚洲欧美日韩综合国产aⅴ| 成人区人妻精品一区二| 亚洲综合男人的天堂| 99热在线只有精品| 日韩亚洲第一页| 日韩福利影视 | 欧美私人啪啪vps| 天天做天天干天天操| 欧美经典三级视频一区二区三区| 国产成人无码一区二区在线播放| 亚洲精品国产精品国产自| 欧美韩日亚洲| 岛国视频一区免费观看| 合欧美一区二区三区| 国产chinesehd精品露脸| 亚洲靠逼com| 亚洲av少妇一区二区在线观看 | 成人影院在线视频| 国产一区二区三区免费不卡| 亚洲激情婷婷| 久久精品女同亚洲女同13| 精品国产乱码久久久久久天美| 欧美熟妇交换久久久久久分类| 久久免费视频这里只有精品| 成人春色在线观看免费网站| 日韩在线观看a| av在线播放成人| 欧美日韩综合一区二区三区| 亚洲人免费视频| 久草综合在线| 久久免费视频2| 国产黄色91视频| 日本少妇做爰全过程毛片| 日韩大陆欧美高清视频区| 成人欧美大片| 亚洲欧洲一区二区福利| 精品亚洲免费视频| 国产一二三四在线| 精品亚洲一区二区三区| 456成人影院在线观看| 中文字幕乱码一区二区三区 | 91丝袜美腿美女视频网站| 你懂的视频一区二区| www国产视频| 在线视频综合导航| 久做在线视频免费观看| 99理论电影网| 麻豆久久精品| 91久久久久久久久久久久久久| 欧美大片日本大片免费观看| 岛国av在线网站| 西游记1978| 丰满少妇久久久久久久| 老熟妇仑乱一区二区av| 日韩在线观看网站| 国产厕拍一区| 国产一线二线三线在线观看| 亚洲精品视频在线| 黄色大片在线免费观看| 91网站在线免费观看| 国产一区二区三区的电影 | 天天色综合天天色| 亚洲一区欧美一区| 9色在线视频网站| 久久99精品久久久久久久青青日本 | 欧美久久精品一级黑人c片| 日韩欧美国产大片|