回答
假設這個表:
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. 在groovy.sql中確定Oracle查詢結果的數據類型
- 2. VB.net查詢結果
- 3. 查詢特定結果集
- 4. 在數據庫查詢結果集中的字段前添加文本
- 5. javascript - 在結果集中訪問數據類型varchar(max)的字段
- 6. 在C#中確定參數的數據類型爲SQL查詢#
- 7. SpagoBI:使用查詢數據集結果的腳本數據集
- 8. MySQL根據結果集確定列類型
- 9. 在python中獲取查詢結果行集合的精確sql類型
- 10. postgresql查詢上的大型結果集
- 11. 如何從sql查詢結果中獲取所有字段的數據類型。我使用Oracle數據庫
- 12. PHP/MySQL - 如何確定給定查詢結果中的字段名稱?
- 13. 確定類類型類型字段
- 14. vb.net循環查詢結果
- 15. 從MySQL查詢結果中檢索字段元數據
- 16. 要在標籤VB.net中顯示的數據庫查詢結果
- 17. 如何將子查詢結果字段集中到父查詢中?
- 18. 映射到Java數據類型的嵌套查詢結果
- 19. clojure.java.jdbc /查詢大型結果集懶惰
- 20. Django,給定查詢集的中介模型的字段總和
- 21. 特定查詢的結果集
- 22. 如何確定SQL結果的數據類型?
- 23. 從VB.NET查詢Access數據庫中的是/否字段
- 24. 在vb.net中綁定與強類型數據集的組合框
- 25. Django模型查詢結果不準確
- 26. 混合類型的Solr查詢結果
- 27. 如何顯示包含特定數據的字段的mysql查詢結果?
- 28. 指定字段從Rails的查詢結果中不包括
- 29. MongoDB查詢結果中的自定義字段
- 30. 確保SML特定類型的結果
如何從數據庫中獲取數據?你不知道源列的類型嗎? – jason 2010-02-02 18:22:59
存儲過程,command.reader – Alex 2010-02-03 06:33:55