我尝试从Ado.Net获取给定表列的值,如下所示
var query = "select transmission_time, actual_transaction_amount as sum_amount FROM table_name";
using (NpgsqlConnection conn = new NpgsqlConnection("connectionString"))
{
conn.Open();
NpgsqlCommand command = new NpgsqlCommand(query, conn);
using (NpgsqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var amount = reader.GetDecimal(Convert.ToInt32(reader["sum_amount"]));
result.Add(amount.ToString());//= amount;
}
}
但我收到错误
System.OverflowException:值对于Int32.Blockquote而言太大或太小
但当我把这行改成
var amount = reader.GetDecimal(Convert.ToInt64(reader["sum_amount"]));
我得到以下错误
参数1无法从'long'转换为'int'
请我需要将该列中的数字转换为数字,并在结果中返回。
我尝试获取的列中的值与以下示例类似
postgreSql表中的10000、5000、20000等
该应用程序是一个运行在Windows上的Asp.Net6应用程序。如有任何帮助,我们将不胜感激。谢谢
1条答案
按热度按时间ni65a41a1#
这行字说不通:
我假设您实际上要做的是从
sum_amount
列中获取一个int
值,并将其转换为decimal
。(即,object
参考),将其打开,然后使用int
值作为索引,从可能不存在其他列中获取decimal
。我认为您实际上是想这样做: