簡體   English   中英

如何在 C# 中從 MySQL 檢索 tinyint 數據類型?

[英]How do I retrieve a data type of tinyint from MySQL in C#?

因此,在 C# 中,每當我從 MSSQL 數據庫中檢索 tinyint 時,我都會使用以下強制轉換。

(int)(byte)reader["MyField"];

但是,該演員表在 MySQL 中似乎不起作用。

我試過的

(byte)reader["MyField"];

只是

(int)reader["MyField"];

編輯 1

例外

The specified cast is not valid.

編輯 2

這是數據類型。

{Name = "SByte" FullName = "System.SByte"}

要確定正確的類型,請查看的值

reader["MyField"].GetType()

在調試器中。

問題是由於強制轉換和顯式運算符:

(byte)objectExpression(byte)sbyteExpression

第一個是[直接]鑄造因為真正的對象類型是失敗sbyte而不是byte 后者將執行恰好使用明確的運算符(“顯式轉換”)的語法,不幸的是,看起來還是像[直接]按上述轉換 以下是 sans-database 失敗的示例:

var obj = (object)(sbyte)0;
var i1 = (int)(sbyte)obj;  // okay: object (cast)-> sbyte (conversion)-> int
var i2 = (int)obj;         // fail: sbyte (cast)-> int (but sbyte is not int!)

要么使用對真實對象類型有效的(sbyte)objectExpression ,要么使用Convert.ToInt32(objectExpression)接受一個object並執行一些魔法轉換為 int。 (使用Convert.ToByte可能會在溢出時引發異常。)

快樂編碼!

我可以建議讓系統對自己工作嗎? DataReader 類提供了獲取正確類型值的功能:

reader.GetInt32("id");
reader.GetByte("MyByteField");

通過這種方式,閱讀器為您提供您期望的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM