2009-06-29 59 views
1

在這種情況下,Visual Studio設計器會生成一個將參數作爲int的方法,即使相應的數據庫列被指定爲System.Int64。使用Int64參數通過ODBC數據連接進行TableAdapter查詢

這是在 「的TableAdapter查詢配置嚮導」 中指定的查詢:

SELECT * 
FROM my_table 
WHERE "status_id" = ? 

再次,STATUS_ID是類型System.Int64的。這是設計師生成的內容:

public virtual DataSet1.MyDataTable GetDataByStatusId(int status_id) { ... } 

爲什麼參數不是Int64?這是Visual Studio中的錯誤嗎? (我使用的是2008 SP1)。我最終可能會手動使用OdbcCommand類。

編輯:我正在使用PostgreSQL,並且該列被指定爲類型bigint。

回答

2

好的,我想通了。 Visual Studio應該足夠聰明,可以使參數長(Int64),但以下是如何手動設置:

在Visual Studio數據集設計器中,選擇由添加查詢嚮導生成的方法 - 例如,表示「FillByStatusId,GetDataByStatusId(status_id)」的項目。在屬性窗口中,找到「參數」行並選擇「...」這將允許您手動設置「DbType」爲Int64(或其他),這解決了我的問題。

0

數據庫類型是否長?如果在MS Access中有一個自動編號類型(相當於long(int64)),那麼int64將由設計者創建......另外,您使用的是哪個數據庫?

編輯:使用bigint數據類型,您應該可以使用最大9223372036854775807 ...和int32,最大2147483647的數字。換句話說,您使用PostgreSQL相當於一個int64,它可以接受任何int可達9223372036854775807. int32的工作原理是該數字在該範圍內始終有效。在.Net中,您可以隱式地在許多數字數據類型之間進行轉換。例如,將一個int乘以1.0,它將變成一個double。沒有必要明確地投射或轉換。但是,您不能在沒有數據丟失的情況下投射其他方向。

+0

我正在使用PostgreSQL,數據類型爲bigint。 – 2009-06-30 15:08:44

+0

嗯,我知道一個int32工程(因爲int32到int64轉換總是有效的,就像你說的),但我仍然需要使用int64作爲參數。 Visual Studio應該使它成爲int64。但我想出瞭如何改變這一點。 – 2009-06-30 21:18:42