Supponendo che tu voglia scorrere una raccolta di righe e desideri inserirle tutte, proverei con uno pseudocodice come questo.
string cmdText = "INSERT INTO MY_INSERT_TEST(Col1, Col2, Col3) VALUES(?, ?, ?)";
using(OdbcConnection cn = getDBConnection())
using(OdbcCommand cmd = new OdbcCommand(cmdText, cn))
{
cn.Open();
cmd.Parameters.AddWithValue("@p1", "");
cmd.Parameters.AddWithValue("@p2", "");
cmd.Parameters.AddWithValue("@p3", "");
foreach(DataRow r in dt.Rows)
{
cmd.Parameters["@p1"].Value = r["Column3"].ToString());
cmd.Parameters["@p2"].Value = r["Column1"].ToString());
cmd.Parameters["@p3"].Value = r["Column2"].ToString());
cmd.ExecuteNonQuery();
}
}
Costruire una query parametrizzata, definire i parametri (qui ci sono tutti i parametri di tipo stringa, devono essere controllati) e quindi scorrere le righe del datatable assegnando il valore dei parametri dalla colonna corrispondente. Nota che nel testo del comando non scrivi direttamente i valori ma metti un segnaposto per il valore effettivo che fornirai all'interno del ciclo.