插入数值的正确方法是什么

时间:2017-11-30 14:48:06

标签: c# sql postgresql npgsql

我在插入数字时遇到问题。在代码中,值看起来没问题。它们有6个小数位。与-66.787735

一样

enter image description here

但是当检查数据库看起来像是在-66.787730的最后一个小数位,如果我在pgAdmin上直接插入,则插入所有小数

enter image description here

在postgresql中,我将字段定义为numeric (10,6)

CREATE TABLE worker_positions
(
  worker_position_id integer NOT NULL 
                     DEFAULT nextval('worker_postiion_worker_position_id_seq'::regclass),
  worker_id integer,
  x_long numeric(10,6),
  y_lat numeric(10,6),
  event_time timestamp without time zone DEFAULT now()
)

首先我尝试AddWithValue现在我尝试创建参数并指定类型但结果相同。

// Insert some data
using (var cmd = new NpgsqlCommand())
{
    cmd.Connection = conn;
    cmd.CommandText = "INSERT INTO worker_positions (worker_id, x_long, y_lat) 
                            VALUES (@worker_id, @x_long, @y_lat)";

    cmd.Parameters.AddWithValue("worker_id", salesmanPosition.SalesmanId);

    //cmd.Parameters.AddWithValue("x_long", salesmanPosition.x_long);
    //cmd.Parameters.AddWithValue("y_lat", salesmanPosition.y_lat);

    NpgsqlParameter p = new NpgsqlParameter("x_long", NpgsqlDbType.Numeric);
    p.Value = salesmanPosition.x_long;
    cmd.Parameters.Add(p);
    p = new NpgsqlParameter("y_lat", NpgsqlDbType.Numeric);
    p.Value = salesmanPosition.y_lat;
    cmd.Parameters.Add(p);

    cmd.ExecuteNonQuery();
}

我正在使用Postgresql 9.4和PgAdmin III

1 个答案:

答案 0 :(得分:0)

我只对6位数感兴趣所以在我的情况下使用ERROR ApplicationMaster: SparkContext did not initialize after waiting for 100000 ms. Please check earlier log output for errors. Failing the application. 工作:

NpgsqlDbType.Double