Jag skulle rekomenderar dig att istället för den första DataReadern, använda dig av en DataTable istället. Då kan du stänga kopplingen till databasen och sedan kan du konvertera dina lösenord och spara ner dem till databasen igen...
- M
3 svar · 442 visningar · startad av Addeladde
Hej
Jag ska hasha lösenord i en databas och måste därför köra en nästlad datareader. Men det går inte så bra. Efter ca 20 poster så står den bara kvar oh tuggar tills jag får ett connection timeout. Här är min kod:
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString);
SqlCommand cmd = new SqlCommand("TEMP_GetNotConvertedPasswords", conn);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
SqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
Response.Write(dataReader["userPassword"] + "</br>");
Response.Flush();
DBAccess db = new DBAccess();
db.Parameters.Add(new SqlParameter("@userNumber", dataReader["userNumber"].ToString()));
db.Parameters.Add(new SqlParameter("@password", FormsAuthentication.HashPasswordForStoringInConfigFile(dataReader["userPassword"].ToString(), "sha1")));
db.ExecuteNonQuery("TEMP_ConvertPassword");
db.Dispose();
}
dataReader.Close();
dataReader.Dispose();
conn.Close();
conn.Dispose();
Jag skulle rekomenderar dig att istället för den första DataReadern, använda dig av en DataTable istället. Då kan du stänga kopplingen till databasen och sedan kan du konvertera dina lösenord och spara ner dem till databasen igen...
- M
Ett Datatable måste man bygga upp förhand eller hur? Det går inte lika lätt som:
SqlDataReader dataReader = cmd.ExecuteReader();
?
Du kan använda dig av SqlAdaptern och antingen fylla en datatable med den, eller hämta ut en datatable från adpatern (kommer inte ihåg vilket)
- M