База данных не обновляется с помощью набора данных - PullRequest
0 голосов
/ 06 сентября 2018

Итак, проблема в том, что данные из моего набора данных не обновляются до SQL-сервера обратно.

Ниже приведена функция обновления года лицензии (лет) и стоимости (стоимости) для конкретного элемента лицензии (id) на основе входных параметров.

Первоначально я получаю фактическую дату истечения срока действия и добавляю количество лет из входного параметра лет, а затем обновляю соответствующую лицензию с обновленным годом и стоимостью.

Я создаю адаптер, чтобы выбрать все лицензии и заполнить их набором данных, а затем обновить их с помощью команды обновления соответствующим образом.

Но в конце данные не обновляются.

Есть идеи?

public void UpdateLicense(int id,int years,double cost)
    {
        try{
            SqlConnection conn = DBConnection.GetConnection();
            conn.Open();
            string PurDate="";
            SqlCommand sqlGetDate = new SqlCommand("select expiration_date from License where id ="+id, conn);
            SqlDataReader reader = sqlGetDate.ExecuteReader();
            while (reader.Read())
            {
                if (!reader.IsDBNull(0))
                {
                    PurDate = (string)reader["EXPIRATION_DATE"];
                }
            }
            reader.Close();
            string updatedYear = DateTime.ParseExact(PurDate, "dd/MM/yyyy", CultureInfo.InvariantCulture).AddYears(years).ToString("dd/MM/yyyy");
            string sqlLicIns = "select * from License";
            SqlDataAdapter adapter = new SqlDataAdapter(sqlLicIns, conn);
            DataSet ds = new DataSet("License");
            adapter.Fill(ds, "License");
            SqlCommand sqlLicUpd = new SqlCommand("update License set cost =" + cost + ", expiration_date='" + updatedYear + "' where id =" + id, conn);
            adapter.UpdateCommand = sqlLicUpd;
            adapter.Update(ds, "License");
            adapter.Dispose();
            sqlLicUpd.Dispose();
            conn.Close();
            }
        catch(Exception ex){
            Console.WriteLine(ex.Message);
        }
    }
...