2016-07-18 7 views
0

I C# bin mit Doppel Array zurückzukehren und den folgenden Code zu schreiben, aber ich habe Fehler in Convert.ToDouble[]:wie Doppel-Array aus Postgresql-Datenbank mit C# abrufen?

  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 
        { 

        } 
       } 
      } 

Wie kann ich dieses Problem lösen?

+0

Können Sie Fehler melden? – vanloc

+0

Bitte lesen Sie diese Anleitung, um Werte von DataRow zu lesen: http://www.dotnetperls.com/datarow Im Grunde müssen Sie die Zeile 'row.ItemArray' durchlaufen und jeden Wert mit 'Convert.ToDouble' in einen Doppelklick umwandeln '. Sie können Werte unter Verwendung der Liste sammeln. – csharpfolk

Antwort

0

Ich kann keine Methode wie Convert.ToDouble[] finden. Bitte lesen Sie: https://msdn.microsoft.com/en-us/library/system.convert.todouble(v=vs.110).aspx.

Zuerst können Sie in List<> oder Array konvertieren, wenn row["fcth"] Array ist.

Zu diesem Zeitpunkt

, sollten Sie dies mögen:

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

Das einzige Beispiel, rows["fcth"] = "1, 4, 4, 7" wird Array Doppeltyp zurück.

Zweitens, wenn Sie nur String in Double konvertieren möchten.

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

oder

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

können Sie ändern.

+0

Ich denke nicht, dass die Verwendung von 'Split (',')' auf DataRow eine gute Idee ist, da Sie über die 'ItemArray'-Eigenschaft auf Zeilenspalten zugreifen können. In meinem Land verwenden wir ',' als Dezimaltrennzeichen, damit die Zahlen falsch aufgeteilt werden. – csharpfolk

+0

Welcher Verweis wird zu 'Split (',')' verwendet? – Sawa

+0

Ja, ich nur Beispiel einfach wenn @Sawa ein Doppel-Array zu Liste <> hinzufügen möchten, sollte 'Zeilen [" fcth "]' ein Array sein. Der 'Split (',')' wird manuell angepasst, dies ändert sich in diesem Fall. – vanloc