Co się popsuło w Microsoft Visual Studio ?

0

Witam serdecznie!

Powiedzcie gdzie robię błąd?

  1. pobieram dane z tabela1
 
SqlCeDataAdapter DA_xxx = new SqlCeDataAdapter ("SELECT * FROM tabela1", połączenie);
DataSet ds_xxx = new DataSet();
ds_xxx.Tables.Add("xxx");
DA_xxx.Fill(ds_xxx, "xxx");
DataTable dt_xxx = new DataTable();
DA_xxx.Fill(dt_xxx);

... i działa :-)
2) to co pobrane w pkt 1. wpisuję do tabela2

 
for (int i = 0; i<dt_xxx.Rows.Count; i++)
{
string kolumna1_w_tabela2 = ds_xxx.Tables[0].Rows[i][0].ToString();

SqlCeComand insert_tab2 = połączenie.CreateCommand();
insert_tab2.CommandText = "INSERT INTO tabela2 (kolumna1_w_tabela2) VALUES (@kolumna1_w_tabela2)";
insert_tab2.Parameters.Add("@kolumna1_w_tabela2", kolumna1_w_tabela2);
insert_tab2.ExecuteNonQuery();
}

... i NIE działa :-( tzn. po otwarciu odpowiedniej zakładki Show Table Data w programie Microsoft Visual C# 2010 Express to tabela jest pusta, program nie wpisał wartości do tabela2, a co ciekawe kod sprawdzający prawidłowość tego programu nie zgłasza komunitaktu o błędzie.

Z góry dziękuję za wszelką pomoc.
Pozdrawiam

0

Po pierwsze - po co taki kod:
DataTable dt_xxx = new DataTable();
DA_xxx.Fill(dt_xxx);
Dlaczego nie pobierzesz DataTable z DataSet'a?

Po drugie - debugowałeś program i jesteś pewien, że:

  1. dt_xxx.Rows.Count > 0
  2. ds_xxx.Tables[0].Rows[i][0].ToString() != null
    ??

Po trzecie - czemu robisz taką dziwną pętlę? Nie łatwiej tak:

foreach (DataRow dr in ds_xxx.Tables["xxx"].Rows)
{
string kolumna1_w_tabela2 = dr[0] as string;

ewentualnie, zamiast dr[0], podać nazwę kolumny: dr["nazwa_kolumny"]
???

Po czwarte - jesteś pewien, że w nazwie parametru powinna być małpka:
czy zamiast tak:
insert_tab2.Parameters.Add("@kolumna1_w_tabela2", kolumna1_w_tabela2);
nie powinno być tak:
insert_tab2.Parameters.Add("kolumna1_w_tabela2", kolumna1_w_tabela2);
???

1 użytkowników online, w tym zalogowanych: 0, gości: 1