Databáze > MySQL

Select a Update v jednom prikazu?

<< < (2/2)

erdt.martin:
mira: Jak to myslis prosim? Mohl bys mi to tu ukazat?

Mi.Chal.: zkousim to tedy takto:


--- Kód: C++ ---while (cteni.Read())            {                sAdresa = (cteni.GetString(0));                sStazenaData = Geo.StahniSouradniceGPS(sAdresa);                MessageBox.Show(string.Join(",",sStazenaData));                                                MySqlCommand prikaz2 = new MySqlCommand();                MySqlConnection pripojeni2 = new MySqlConnection("Database=" + sJmenoDB + ";DataSource=" + sDataSource + ";UserId="                                                          + sUzivatel + ";Password=" + sHeslo);                pripojeni2.Open();                 MySqlDataReader upravaDat;                prikaz2.CommandText = "UPDATE firma SET GPSx=1, GPSy=2, Accuracy=123 WHERE Adresa=" + sAdresa;                prikaz2.Connection = pripojeni2;                upravaDat = prikaz.ExecuteNonQuery();                pripojeni2.Close();            }             cteni.Close();            pripojeni.Close(); 
bohuzel se na radku
--- Kód: C++ ---upravaDat = prikaz.ExecuteNonQuery() setkavam s errorem : "Error 1 Cannot implicitly convert type 'int' to 'MySql.Data.MySqlClient.MySqlDataReader'" a kdyz to upravim na MySqlDataAdapter, tak to pise to same, jen na konci je Adapter...

Pepak: Fungovalo by toto i v mem pripade? Teda, ze bych mezi tim vykonal nejakou mimodatabazovou akci?

pepak:
Pokud MySQL umí UDF (user-defined functions), tak by mělo.

mira:
Nevím, jak se připojuješ k databazi, pokud by to bylo přes ODBC, tak by to mohlo vypadat třeba takto:


--- Kód: C++ ---            using (OdbcDataAdapter adapter = new OdbcDataAdapter(selectQuery, connection))            {                using (DataTable table = new DataTable())                {                    adapter.Fill(table);                     string address;                    foreach (DataRow row in table.Rows)                    {                         // zde upravit data                        address = row["address"].ToString();                                                // Geo.StahniSouradniceGPS(address);                                                row["GPSx"]     = 1;                        row["GPSy"]     = 2;                        row["Accuracy"] = 123;                    }                     // poslat upravena data zpet do DB                    adapter.Update(table);                }            } 
Jinak je to popsáno např. zde http://msdn.microsoft.com/en-us/library/33y2221y(v=vs.80).aspx

Mi.Chal.:

--- Citace: erdt.martin  23-07-2012, 13:42:54 ---bohuzel se na radku
--- Kód: C++ ---upravaDat = prikaz.ExecuteNonQuery() setkavam s errorem : "Error 1 Cannot implicitly convert type 'int' to 'MySql.Data.MySqlClient.MySqlDataReader'" a kdyz to upravim na MySqlDataAdapter, tak to pise to same, jen na konci je Adapter...

--- Konce citace ---

taky si to chce přečíst, co ta metoda dělá. Vrací počet upravených záznamů, takže to nepůjde přiřadit do datareaderu. V podstatě ten result na nic nepotřebuješ.

Navigace

[0] Seznam témat

[*] Předchozí strana

Přejít na plnou verzi