2016-07-18 1 views
0

私は二重の配列を返すと、次のコードを記述するためにC#を使用していますが、私はConvert.ToDouble[]にエラーが発生しました:どのようにC#を使用してpostgresqlデータベースからダブル配列を取得するには?

  string connectionString = "Server=localhost;port=5432;Database=dbtest;User ID=postgres;Password=123"; 
     NpgsqlConnection dbcon = new NpgsqlConnection(connectionString); 
     dbcon.Open(); 
     NpgsqlCommand dbcmd = dbcon.CreateCommand(); 

     string sql = "SELECT fcth FROM test01"; 
     NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, dbcon); 

     NpgsqlCommand command = new NpgsqlCommand("SELECT fcth FROM tbl"); 
     NpgsqlDataReader dr = dbcmd.ExecuteReader(); 

     DataSet ds = new DataSet(); 
     da.Fill(ds, "tbl"); 
     List<double[]> arr = new List<double[]>(); 

     foreach (DataRow row in ds.Tables["tbl"].Rows) 
     { 
      dr.Read(); 

      arr.Add(Convert.ToDouble[](row["fcth"].ToString())); 
     } 

     for (int j = 0; j < arr.Count; j++) 
     { 
       try 
       { 
        string sql2 = "INSERT INTO tbl2(fh) VALUES ('" + arr[j] + "')"; 

        dbcmd.CommandText = sql2; 
        dbcmd.ExecuteNonQuery(); 
       } 
       catch (NpgsqlException ex) 
       { 

        if (ex.Data == null) 
        { 
         throw; 
        } 
        else 
        { 

        } 
       } 
      } 

どのように私はこの問題を解決することができますか?

+0

エラーを投稿できますか? – vanloc

+0

このチュートリアルでは、DataRowから値を読み取る方法はありません。http://www.dotnetperls.com/datarow基本的には、 'row.ItemArray'をループし、各値を' Convert.ToDouble '。 'List 'を使って値を収集することができます。 – csharpfolk

答えて

0

Convert.ToDouble[]のような方法は見つかりませんでした。読む:https://msdn.microsoft.com/en-us/library/system.convert.todouble(v=vs.110).aspx

row["fcth"]が配列の場合は、最初にList<>またはArrayに変換できます。

この時点で、あなたは次のようにする必要があります。

Array.ConvertAll(row["fcth"].Split(','), Double.Parse);

これだけの例を、rows["fcth"] = "1, 4, 4, 7"は配列double型を返します。

第2に、文字列をdoubleに変換する場合のみです。

あなたはに変更することができます。

arr.Add((Double)row["fcth"]);

または

arr.Add(double.TryParse(row["fcth"]);

+0

'ItemArray'プロパティを介して行の列にアクセスできるので、DataRowで' Split( '、') 'を使用することはお勧めできません。私の国では、小数点区切り記号として '、'を使用しています。これは、数値を正しく分割しないためです。 – csharpfolk

+0

'Split( '、')'にはどの参照が使われていますか? – Sawa

+0

はい、@SawaがList <>に二重配列を追加したいだけで、rows ["fcth"] 'は配列でなければなりません。 'Split( '、')'はカスタムであり、これは彼の場合にこれを変更します。 – vanloc

関連する問題