0

私のコードはデータベースから文字列値を正常に読み取ることができますが、整数値をインポートしたい場合、(データベースにそのフィールドに値が割り当てられていても) null 値として読み取られます。

私のコード:

query = "SELECT * FROM Enemies";
da = new OleDbDataAdapter(query, conn);
da.Fill(dt); // dt = DataTable
wea = new Weapon(Convert.ToString(dt.Rows[randomItem][1])); // Works perfect for only string value retrieval       
// randomItem = Randomly chooses a row from the database to use for object construction 

次のコードを使用すると、「InvalidCastExcpetion was unhandled」という例外が発生します。「オブジェクトは DBNull から他の型にキャストできません」

wea = new Weapon(Convert.ToInt32(dt.Rows[randomItem][2])) // The 2 gets the damage column from the database
4

1 に答える 1

0

ご回答いただきありがとうございます。変換を行う別の変数を作成することで解決策を見つけました。その後、その値を Weapon オブジェクトの作成に渡します。元のコードが機能するはずだったように感じますが、値を直接呼び出した後に整数変換を行うと、気に入らないようです。

コード:

 int weaponDamage = Convert.ToInt32(dt.Rows[randomItem][2]);
 wea = new Weapon(weaponDamage);
于 2013-02-22T14:38:28.520 に答える