回答
假設這個表:
CREATE TABLE TestTable
(
Col1 int,
Col2 dec(9,2),
Col3 money
)
有了這些值:
INSERT INTO TestTable VALUES (1, 2.5, 3.45)
您可以使用下面的代碼來獲取類型爲.NET類型:
Dim DSN = "SERVER=XYZ;UID=XYZ;PWD=XYZ;DATABASE=XYZ"
Using Con As New SqlConnection(DSN)
Con.Open()
Using Com As New SqlCommand("SELECT * FROM TestTable", Con)
Com.CommandType = CommandType.Text
Using RDR = Com.ExecuteReader()
If RDR.Read Then
Trace.WriteLine(RDR.GetProviderSpecificFieldType(0)) 'Returns System.Data.SqlTypes.SqlInt32
Trace.WriteLine(RDR.GetProviderSpecificFieldType(1)) 'Returns System.Data.SqlTypes.SqlDecimal
Trace.WriteLine(RDR.GetProviderSpecificFieldType(2)) 'Returns System.Data.SqlTypes.SqlMoney
End If
End Using
End Using
Con.Close()
End Using
你可以也可以使用它來獲取該類型的SQL文本版本:
Dim DSN = "SERVER=XYZ;UID=XYZ;PWD=XYZ;DATABASE=XYZ"
Using Con As New SqlConnection(DSN)
Con.Open()
Using Com As New SqlCommand("SELECT * FROM TestTable", Con)
Com.CommandType = CommandType.Text
Using RDR = Com.ExecuteReader()
If RDR.Read Then
Using SC = RDR.GetSchemaTable()
Trace.WriteLine(SC.Rows(0).Item("DataTypeName")) 'Returns int
Trace.WriteLine(SC.Rows(1).Item("DataTypeName")) 'Returns decimal
Trace.WriteLine(SC.Rows(2).Item("DataTypeName")) 'Returns money
End Using
End If
End Using
End Using
Con.Close()
End Using
編輯
這裏是如何做到這類型的比較與格式化的東西助手功能一起。輸出再一次假定上面的SQL。
Dim DSN = "SERVER=XYZ;UID=XYZ;PWD=XYZ;DATABASE=XYZ"
Using Con As New SqlConnection(DSN)
Con.Open()
Using Com As New SqlCommand("SELECT * FROM TestTable", Con)
Com.CommandType = CommandType.Text
Using RDR = Com.ExecuteReader()
If RDR.Read Then
Trace.WriteLine(FormatNumber(RDR.Item(0), RDR.GetProviderSpecificFieldType(0))) '1
Trace.WriteLine(FormatNumber(RDR.Item(1), RDR.GetProviderSpecificFieldType(1))) '2.50
Trace.WriteLine(FormatNumber(RDR.Item(2), RDR.GetProviderSpecificFieldType(2))) '$3.45
End If
End Using
End Using
Con.Close()
End Using
Private Shared Function FormatNumber(ByVal number As Object, ByVal type As Type) As String
If number Is Nothing Then Throw New ArgumentNullException("number")
If type Is Nothing Then Throw New ArgumentNullException("type")
If type.Equals(GetType(System.Data.SqlTypes.SqlInt32)) Then
Return Integer.Parse(number)
ElseIf type.Equals(GetType(System.Data.SqlTypes.SqlDecimal)) Then
Return Decimal.Parse(number.ToString()).ToString("N")
ElseIf type.Equals(GetType(System.Data.SqlTypes.SqlMoney)) Then
Return Decimal.Parse(number.ToString()).ToString("C")
End If
Throw New ArgumentOutOfRangeException(String.Format("Unknown type specified : " & type.ToString()))
End Function
瞭解詳情!!! 但是我無法在vb.net中使用它。 我試過這個: 如果reader.GetProviderSpecificFieldType(i)= System.Data.SqlTypes.SqlMoney 我得到一個錯誤,說SqlMoney是一個Type並且不能在表達式中使用。 GetSchemaTable由於intelisence沒有選擇它,所以我在上班時遇到了更多麻煩。 但是當我在調試器中嘗試它時,像: typeof sc.rows(0)。Item(0)是int我得到了錯誤,並且我得到了false,無論我嘗試將它與哪種類型進行比較。 (它是一個整數)。 – Alex 2010-02-03 04:19:34
太棒了!謝謝!! (Integer.Parse(CStr(number))) – Alex 2010-02-03 16:56:54
不好意思,應該是Integer.Parse(number.ToString())。ToString(),看起來像我當時有Option String Off。 – 2010-02-03 17:05:52
只能訪問基礎值而不訪問數據庫的結構,因此無法明確地告訴數據類型是什麼類型。原因是Money,Real和Int值的領域存在重疊。例如,數字4可能既是真實的,也可能是金錢。
您能否就這個問題給我們更多的背景?你是否試圖將原始數據庫值轉換爲VB.Net中的Int樣式值?你能告訴我們一些代碼嗎?
我想格式化貨幣,並保持原樣,真正的數字四捨五入到2個小數位。 的代碼是這樣的:(所有的值都爲1個結果進來) 讀者= cmd.ExecuteReader() reader.Read() 如果reader.HasRows然後 Me.DataGridView1.Rows.Clear() 對於i.Rows(Me.DataGridView1.RowCount - 1).Cells(0).Value = reader.GetName(i).ToString Me.DataGridView1.Rows(Me.DataGridView1.RowCount - 1).Cells(1)。價值= reader.Item(ⅰ)的ToString 接着 Me.DataGridView1.Refresh() 結束如果 – Alex 2010-02-02 18:38:19
遺憾的代碼,我發佈它可讀和網站掉落所有空間,等 – Alex 2010-02-02 18:39:00
@ bochur1:發佈它在你的問題。 – jason 2010-02-02 18:41:14
- 1. VB.net查詢結果
- 2. 在數據庫查詢結果集中的字段前添加文本
- 3. javascript - 在結果集中訪問數據類型varchar(max)的字段
- 4. SpagoBI:使用查詢數據集結果的腳本數據集
- 5. MySQL根據結果集確定列類型
- 6. postgresql查詢上的大型結果集
- 7. PHP/MySQL - 如何確定給定查詢結果中的字段名稱?
- 8. vb.net循環查詢結果
- 9. 從MySQL查詢結果中檢索字段元數據
- 10. 要在標籤VB.net中顯示的數據庫查詢結果
- 11. 如何將子查詢結果字段集中到父查詢中?
- 12. 映射到Java數據類型的嵌套查詢結果
- 13. 如何確定SQL結果的數據類型?
- 14. Django模型查詢結果不準確
- 15. 混合類型的Solr查詢結果
- 16. 數據集設計者如何確定標量查詢的返回類型?
- 17. 如何顯示包含特定數據的字段的mysql查詢結果?
- 18. 確保SML特定類型的結果
- 19. 將文本框綁定到數據集查詢的字段
- 20. SQL查詢 - 儘量避免結果集中的數據不準確?
- 21. SPARQL:排除從查詢結果數據類型URI
- 22. 「無法確定指定數據集字段中的空間數據類型...」使用地圖圖層嚮導
- 23. 作爲不同數據類型的MySQL查詢字段
- 24. Elasticsearch在查詢時轉換字段的數據類型
- 25. 在數據集的列存儲結果中選擇查詢計數特定值
- 26. 條件字段連接查詢結果
- 27. 貓鼬查詢結果丟失字段
- 28. mySQL - 使用另一個table.field中的數據來確定查詢中的結果
- 29. LINQ查詢數據表中返回不正確的結果
- 30. 顯示查詢結果列類型(PostgreSQL)
如何從數據庫中獲取數據?你不知道源列的類型嗎? – jason 2010-02-02 18:22:59
存儲過程,command.reader – Alex 2010-02-03 06:33:55