精品欧美一区二区三区在线观看 _久久久久国色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色国产在线| 天天摸天天碰天天爽天天弄| 99热这里只有精品8| 精品偷拍一区二区三区在线看| 男人添女人下部高潮视频在观看| 三级黄视频在线观看| 日本成人中文字幕在线视频| 久久精品最新地址| 偷偷色噜狠狠狠狠的777米奇| 成人软件在线观看| 亚洲精品一二三| 欧美激情视频一区二区三区| 最近中文字幕在线视频| 欧美福利一区| 亚洲天堂av网| 好吊操视频这里只有精品| 国产免费不卡| 一区二区三区免费| 日本精品一区二区三区视频| 99久久婷婷国产一区二区三区| 亚洲国产一区二区三区a毛片| 在线播放国产精品| 亚洲精品无码一区二区| 欧美综合影院| 色综合天天狠狠| 国产在线视频综合| av在线中文| 久久综合资源网| 99re在线国产| 91精品国产色综合久久不8| 亚洲精一区二区三区| 久久精品亚洲一区| 一级片手机在线观看| 中文字幕一区日韩精品| 欧美精品久久一区二区三区| 欧在线一二三四区| av电影免费在线看| 一区二区三区在线免费视频| 亚洲美女搞黄| 高清日韩av电影| 99精品视频在线观看免费| 亚洲综合大片69999| 中文字幕第2页| 日日骚欧美日韩| 4k岛国日韩精品**专区| 久草网视频在线观看| 99精品视频在线观看播放| 亚洲天堂久久av| 亚洲午夜久久久久久久久红桃 | 国产成人久久久| 日本三级午夜理伦三级三| 自产国语精品视频| 日韩一二三在线视频播| 99国产精品免费| 欧美天天综合| 伊人久久男人天堂| 在线观看免费小视频| 欧美极品中文字幕| 亚洲片av在线| www.av天天| 欧美日韩精品一区二区视频| 亚洲色图五月天| 成人午夜剧场视频网站| 国产成人ay| 亚洲天堂网站在线观看视频| 西西444www无码大胆| 狠狠综合久久av一区二区蜜桃| 亚洲精品一区二区在线| 91网站免费入口| 国产伦精品一区二区三区千人斩| 亚洲人成网站色ww在线| 国产sm调教视频| 色婷婷亚洲mv天堂mv在影片| 色噜噜狠狠狠综合曰曰曰| 国产精品揄拍100视频| 欧美日韩一区二区三区视频播放| 中文字幕av一区中文字幕天堂| 我不卡一区二区| 成人精品影视| 欧美另类xxx| 日韩精品在线不卡| 天堂久久久久va久久久久| 国产精品美女久久久久av超清| 在线播放一级片| 国产精品白丝av| 精品一区二区三区免费毛片| 国产人成在线视频| 中文字幕在线不卡一区| 黄色三级中文字幕| 一区二区三区短视频| 欧美日韩一区二区在线视频| 日本高清一区二区视频| 精品少妇一区| 国产亚洲人成网站在线观看| 国产免费久久久久| 国产亚洲成人一区| 成人乱人伦精品视频在线观看| 亚洲av永久无码国产精品久久| 不卡一区二区在线| 亚洲欧美综合一区| a级片免费在线观看| 在线这里只有精品| 精品人妻人人做人人爽夜夜爽| 香蕉久久夜色精品国产更新时间| 色偷偷9999www| 午夜偷拍福利视频| 蜜桃精品在线观看| 国产精品免费一区二区三区四区| 成人网视频在线观看| 亚洲一二三四在线观看| 污色网站在线观看| 日韩电影在线观看完整免费观看| 最近2019年好看中文字幕视频 | 三上悠亚 电影| 69xxx在线| 色综合视频一区二区三区高清| 天天干天天草天天| 国产伦精品一区二区三区在线播放| 亚洲片在线资源| 久久高清无码视频| 久久精品久久久精品美女| 国产精品视频免费观看| 2021av在线| 一本色道亚洲精品aⅴ| 免费黄视频在线观看| 欧美综合在线视频观看| 91精品国产高清| av中文字幕免费| 欧美韩国日本综合| av网站在线观看不卡| 91精品短视频| 久久av红桃一区二区小说| 成年人视频免费| 91在线观看高清| 男女裸体影院高潮| 国产亚洲高清一区| 中文字幕亚洲综合久久筱田步美| 99热国产在线观看| 成人一道本在线| 亚洲小说欧美另类激情| 91精品国产经典在线观看| 亚洲高清色综合| 国产真实乱人偷精品视频| 国产最新精品免费| 亚洲精品中文字幕乱码三区不卡| 欧美xxx性| 亚洲欧美日韩国产成人| 日韩免费视频网站| 国产高清久久久| 妞干网这里只有精品| 91丨精品丨国产| 久久中国妇女中文字幕| 国产精品高潮呻吟av| 国产精品伦理一区二区| 亚洲精品高清无码视频| 精品视频日韩| 国产精品wwww| av中文字幕一区二区三区| 欧美午夜理伦三级在线观看| 性欧美一区二区| 青青青爽久久午夜综合久久午夜| 四虎永久国产精品| 欧美高清你懂的| 日韩三级成人av网| 精品人妻伦一二三区久久 | 欧美男女性生活在线直播观看| 日本美女xxx| 美日韩一级片在线观看| 在线精品亚洲一区二区| 激情久久免费视频| 欧美激情一级欧美精品| 天天干视频在线观看| 精品久久香蕉国产线看观看亚洲 | 不卡av在线网站| 国内精品久久久久久久久久| 亚洲自拍偷拍av| 五十路六十路七十路熟婆| 久久国产精品久久w女人spa| 亚洲va久久久噜噜噜久久狠狠 | 成人在线一级片| 麻豆精品在线观看| 日韩免费在线观看av| 日韩丝袜视频| 国产精品揄拍500视频| 最新国产在线拍揄自揄视频| 亚洲精品www久久久| 在线观看 亚洲| 最新国产精品久久精品| 国产高潮失禁喷水爽到抽搐| 久久精品午夜| 最新国产精品久久| 国产一区二区在线视频你懂的| 清纯唯美亚洲激情| 日本美女高清在线观看免费| 精品免费一区二区三区| 欧美人一级淫片a免费播放| 亚洲色图第一区| 亚洲第九十七页| 久久国产精品第一页| 超碰成人免费在线| 日本一二区不卡| 国产精品裸体一区二区三区| 素人啪啪色综合| 久久久久国色av免费观看性色| 国产午夜精品一区理论片| 精品少妇一区二区三区| 精品成人无码久久久久久| 亚洲激情图片qvod| 级毛片内射视频| 盗摄精品av一区二区三区| 国产精品人人爽人人爽| 在线不卡亚洲| 中文网丁香综合网| 妖精视频一区二区三区免费观看| 亚洲在线观看视频网站| 国产成人精品亚洲日本在线观看| 欧美激情乱人伦| 色的视频在线免费看| 精品亚洲国产成av人片传媒| 成人激情四射网| 欧美日韩小视频| 国产一级片毛片| 一区二区三区不卡视频在线观看 | 午夜美女福利视频| 欧美日韩国产一区| 免费av中文字幕| 午夜精品国产更新| 久久精品www| 亚洲欧美日韩小说| 色屁屁草草影院ccyy.com| 99久久精品情趣| 亚洲一二三四五| 国产成人av在线影院| 天堂av在线网站| 久久男女视频| 丰满爆乳一区二区三区| 国产一区二区三区自拍| 黄色一级片av| 一区二区三区毛片免费| 在线综合视频网站| 欧美国产一区二区三区激情无套| 日本一区二区三区www| 亚洲理论电影| 免费在线观看一区二区| 亚洲三级性片| 欧美亚州在线观看| 一区二区三区视频免费观看| 精品乱码一区二区三区| 欧美久久精品| 精品视频一区在线| 日韩av资源网| 欧美激情一区二区三区在线视频| 欧美大胆视频| 久久精品日产第一区二区三区乱码 | 国产黄色小视频在线| 一区二区三区亚洲| 日本午夜在线视频| 亚洲欧美视频在线| 国产精品四虎| 三级精品视频久久久久| 日韩专区在线| 久久在线免费观看视频| 宅男网站在线免费观看| 欧美黄色性视频| av影片在线| 全亚洲最色的网站在线观看| 日韩久久一区二区三区| 国产精品一区久久| 欧美日本三级| 国产区一区二区三区| 亚洲+变态+欧美+另类+精品| 欧美午夜精品理论片a级大开眼界| 深夜福利久久| 在线观看欧美激情| 亚洲一本视频| 欧美视频第一区| 蜜桃视频在线观看一区二区| 在线视频一二区| 成人高清视频免费观看| 日韩在线免费观看av| 中文字幕亚洲在| 欧美一级高潮片| 日本久久一区二区| av手机免费看| 精品亚洲国产视频| 精品自拍一区| 午夜美女久久久久爽久久| 日本免费久久| 91免费看网站| 久久不见久久见免费视频7| 在线不卡视频一区二区| 亚洲精品视频啊美女在线直播| 日韩中文字幕组| 国产一区二区在线影院| 制服丝袜第二页| 国产精品国产自产拍高清av王其 | 亚洲成人福利视频| 国产偷国产偷亚洲高清人白洁 | 99精品电影| 1024精品视频| 国产一区二区精品久久| 成人无码www在线看免费| 中文字幕中文在线不卡住| 日韩 欧美 亚洲| 欧美二区在线观看| 亚洲区小说区图片区| 成年人精品视频| 久久野战av| 国产亚洲一区二区三区在线播放| jiujiure精品视频播放| 日韩精品视频在线观看视频| 免费在线观看视频一区| 黄色网址在线视频| 亚洲女厕所小便bbb| 日本一区二区三区久久| 亚洲成在人线av| 182tv在线播放| 国产一区红桃视频| 经典一区二区| 日本日本19xxxⅹhd乱影响| 国产乱码一区二区三区| 国精产品一区一区| 欧美香蕉大胸在线视频观看| 亚洲精品911| 久久影视电视剧免费网站| 四虎4545www国产精品| 精品国产乱码久久久久久郑州公司| 91精品一区国产高清在线gif| 久久久精品麻豆| 久久婷婷久久一区二区三区| 国产无遮挡免费视频| 日韩欧美一区二区不卡| 免费观看在线午夜影视| 国产精品手机播放| 国产一区网站| 国产日韩一区二区在线观看| av不卡免费电影| 国产精品成人久久| 日韩精品自拍偷拍| 国产成人在线视频免费观看| 国产女同一区二区| 日本女优一区| 男女男精品视频站| 国产精品丝袜久久久久久app| 精品国产一区二区三区四| 日韩av在线一区二区| 春色校园综合激情亚洲| 国产一区再线| 亚洲综合三区| 精品少妇一区二区三区免费观| 午夜精品福利在线| 青青草在线免费观看| 亲子乱一区二区三区电影 | 国产在线观看一区二区| 亚洲二区在线播放| 欧美tickling网站挠脚心| 男人天堂亚洲| 国产亚洲精品自在久久| 亚洲免费精品| 女人又爽又黄免费女仆| 欧美体内she精视频| 欧美18hd| 444亚洲人体| 亚洲精品1区2区| 亚洲第一成人网站| 欧美色图片你懂的| 成人看av片| 精品国产乱码久久久久| 久久一二三四| 激情五月深爱五月| 欧美一区二区视频网站| 欧美6一10sex性hd| 蜜桃av色综合| 老司机精品视频一区二区三区| 2025国产精品自拍| 亚洲国产成人久久综合一区| 精品国产第一福利网站| 亚洲欧美国产精品桃花| 国产精品123区| 依依成人综合网| www高清在线视频日韩欧美| 视频精品一区| 久久久久久久久久久免费视频| 中文字幕亚洲一区二区va在线| 精品人妻伦一二三区久久 | 免费看黄色a级片| 91亚洲国产成人精品一区二区三 | 波多野结衣精品| 青娱乐国产91| 国产精品一区二区无线| 久久久久久久久久久久久av| 色狠狠久久aa北条麻妃 | 欧美一进一出视频| 国内一区二区在线| 少妇一级淫片免费放中国 | 久久在线精品| 欧美成人精品激情在线视频| 亚洲欧美国内爽妇网| 日本一区二区三区播放|