Próbuję wysłać zapytanie do bazy danych mySQL i chcę, aby wszystkie wiersze powracały w tablicy, która jest dostępna w podobny sposób.
rows[0]["column"]
rows[1]["column"].
Mój kod jest obecnie:
MySqlCommand cmd = new MySqlCommand(query, conn);
var dt = new DataTable();
dt.Load(cmd.ExecuteReader());
var rows = dt.AsEnumerable().ToArray();
Mogę więc użyć wierszy [0] ["kolumna"], ale wiersze [1] są poza zasięgiem, tak jakby dt.Load nie skanował wszystkich wierszy i dodawał je do listy.
Odpowiedzi:
0 dla odpowiedzi № 1Podaję ci pseudo kod, nie próbowałemaby go skompilować, ale powinien dać ci pomysł, na ogół nie używaj indeksów statycznych, takich jak „1”, aby uzyskać dostęp do drugiego wiersza w tabeli, lepiej mieć pętlę lub inne dynamiczne podejście, które zawsze działa niezależnie od liczby rejestruje zwrot zapytania.
spójrz na to, pomijając obsługę wyjątków dla zwartości
using(var conn = new MySqlConnection(connectionString))
using(var cmd = conn.CreateCommand())
{
conn.Open();
cmd.ComamndText = query;
var adp = new MySqlDataAdapter(cmd);
var dt = new DataTable();
adp.Fill(dt);
// here you can use the table"s rows array to retrieve results
// for example
foreach (var row in dt.Rows)
{
//Do what you want now with this row
}
}