Я использую следующий код, чтобы получить все записи данных из базы данных MS SQL, и я пытаюсь обновить каждую запись. Код используется в WebService. Проблема в том, что код работает нормально, если у меня 1000 записей данных, но теперь у меня есть 20000 записей данных, код сначала возвращается с таймаутом. Затем я установил cmd.CommandTimeout равным нулю, чтобы не было таймаута. Теперь, когда я вызываю функцию в IE WebSvc, окно IE остается пустым и все еще пытается загрузить что-то, но ничего не происходит. Обновляется только 150 datarecords.Восстановить и обновить 20000 записей данных перестает работать
У вас есть идеи, где проблема? Является ли код не лучшим, так что я должен изменить?
спасибо! WorldSignia
MyCode:
private string AddNewOrgBez()
{
try
{
SqlConnection sqlconn = new SqlConnection(this.connectionString);
SqlCommand cmd;
SqlDataReader reader;
sqlconn.Open();
cmd = new SqlCommand("SELECT * FROM dbo.mydata", sqlconn);
cmd.CommandTimeout = 0;
reader = cmd.ExecuteReader();
while (reader.Read())
{
// Felder holen
string okuerzel = reader["O_KURZ"].ToString();
string bezeichnung = reader["O_BEZ"].ToString();
string[] lines = CreateNewOrgBez(bezeichnung);
string sqlcmd = "UPDATE dbo.mydata SET WEB_OBEZ1 = '" + lines[0] + "', WEB_OBEZ2 = '" + lines[1] + "', WEB_OBEZ3 = '" + lines[2] + "' WHERE O_KURZ = '" + okuerzel + "'";
SqlConnection sqlconn2 = new SqlConnection(this.connectionString);
sqlconn2.Open();
SqlCommand cmd2 = new SqlCommand(sqlcmd, sqlconn2);
cmd2.CommandTimeout = 0;
cmd2.ExecuteNonQuery();
sqlconn2.Close();
}
reader.Close();
sqlconn.Close();
return "OK";
}
catch (Exception ex)
{
return ex.Message;
}
}
Не можете ли вы создать sqlconn2 вне цикла? – pascal
Что делает 'CreateNewOrgBez'? Вам действительно нужно вернуть все это в свое приложение, а затем обновить его, агонизируя строку каждый в своей собственной транзакции? –
Небольшое описание: функция получает полный набор сотрудников из базы данных и обновляет их название организации. Функции CreateNewOrgBez создают новое имя из существующего имени. Затем новое имя, которое находится в строках [] Массив, должно быть обновлено до полей WEB_OBEZ ... – 2010-09-27 16:43:20