Npgsql在所有数值后返回额外的“0”小数

时间:2017-03-01 18:42:59

标签: c# npgsql

我们最近将Npgsql库从(非常旧)2.0.11.91升级到最新版本3.2.1。

在Npgsql 2中,返回的所有数值(使用NpgsqlDataAdapter,NpgsqlDataReader等)将具有查询中数据类型的精度和比例(如果未在查询中专门设置,则具有Postgres表中的数据类型)。例如:

pom.xml

然而,在Npgsql 3中,现在返回带有小数的所有数值(使用NpgsqlDataAdapter,NpgsqlDataReader等)以及额外的不必要小数(总小数总数= 4),尽管精度&在查询中(或在Postgres表中)设置比例。例如:

string sql_query = "SELECT 2.33::numeric(38,2)" would return 2.33

使用NpgsqlDataAdapter向DataGridView提取代码:

string query = "SELECT 2.33::numeric(38,2)" now returns 2.3300

string query= "SELECT 2.3::numeric(38,1)" now returns 2.3000

使用NpgsqlDataReader进行代码提取

NpgsqlConnection conn = new NpgsqlConnection("all_required_paramaters");
conn.Open();

DataSet ds = new DataSet();
DataTable dt = new DataTable();

string sql = "SELECT date , numeric_data1, numeric_data2 , numeric_data3 
FROM any_table order by date desc ";

NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
ds.Reset();
da.Fill(ds);
dt = ds.Tables[0];
dataGridView_ABC.DataSource = dt;

conn.Close();

唯一的例外是当值没有任何小数时,它们会被正确返回,例如:

NpgsqlConnection conn = new NpgsqlConnection("all_required_paramaters");

conn.Open();

string sql = "SELECT date , numeric_data1, numeric_data2 , numeric_data3 
FROM any_table order by date desc ";

NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
Npgsql.NpgsqlDataReader res = cmd.ExecuteReader();

List<string> _data1 = new List<string>();
List<string> _data2 = new List<string>();
List<string> _data3 = new List<string>();

while (res.Read())
{
_data1.Add(res["numeric_data1"].ToString());
_data2.Add(res["numeric_data2"].ToString());
_data3.Add(res["numeric_data3"].ToString());
}

conn.Close();
res.Close();

问题:如何使Npgsql 3.2.1返回数据类型的精度和比例&amp;查询或Postgres表中的长度(即没有所有不必要的额外小数),因为它在Npgsql 2中默认完成?

非常感谢。

0 个答案:

没有答案