なぜ私はこのエラーが発生するのか分かりません。 整数の文字列ステータスと整数valortotalを持つデータテーブルがあります。キャストが有効でない
選択クエリを使用してデータを自分のPedido変数にインポートしようとすると、キャストエラーが発生します。 これは
public class Pedido
{
public int numeromesa { get; set; }
public int valorpedido { get; set; }
public string status { get; set; }
}
は今、これは私が選択クエリ
public List<Pedido> listaPedido()
{
vsql = "SELECT * FROM pedidos";
List<Pedido> bancoPedidos = new List<Pedido>();
NpgsqlCommand objcmd = null;
objcmd = new NpgsqlCommand(vsql, con);
NpgsqlDataAdapter adp = new NpgsqlDataAdapter(objcmd);
DataTable dt = new DataTable();
adp.Fill(dt);
foreach (DataRow row in dt.Rows)
{
//This is line 185
Pedido p = new Pedido
{
numeromesa = (int)row[1],
status = (string)row[2],
valorpedido = (int)row[3]
};
bancoPedidos.Add(p);
return bancoPedidos;
}
を使用し作られた方法がある
問題は私が取る場合valorpedido変数であると思われるテーブルからデータを受信するクラスです。それは、コードが正常に動作します
************例外テキスト************* System.InvalidCastException:指定されたキャストはありません有効です。 PostgreSQL.cs:ライン185
インデックスはゼロベースなので、結果セットに4つのカラムがない場合は、ロー[0]、ロー[1]、ロー[2]でなければなりません。列名で索引付けする方がよい。序数ベースの索引付けに関連して「select * from ...」は非常に脆弱なアプローチです。 – dlatikay
1ではなく0からインデックスを作成すべきではないですか? – juharr
valortotalはNULL可能ですか?あなたは、他の答えのコメントの1つに「dbnullにキャストできません」と言いました。 – cost