C# 未使用数据集更新数据库

C# 未使用数据集更新数据库,c#,sql-server,ado.net,dataset,dataadapter,C#,Sql Server,Ado.net,Dataset,Dataadapter,因此,我遇到的问题是,数据集中的数据没有更新回SQL server 以下是根据输入参数更新特定许可项目(id)的许可年(年)和成本(成本)的功能 最初,我获取实际的到期日期,并从输入参数years中添加年数,然后使用更新的年份和成本更新相应的许可证 我正在创建一个适配器来选择所有许可证并填充数据集,然后使用update命令相应地更新数据集 但是,最终数据并没有得到更新 有什么想法吗 public void UpdateLicense(int id,int years,double cost)

因此,我遇到的问题是,数据集中的数据没有更新回SQL server

以下是根据输入参数更新特定许可项目(id)的许可年(年)和成本(成本)的功能

最初,我获取实际的到期日期,并从输入参数years中添加年数,然后使用更新的年份和成本更新相应的许可证

我正在创建一个适配器来选择所有许可证并填充数据集,然后使用update命令相应地更新数据集

但是,最终数据并没有得到更新

有什么想法吗

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);
        }
    }

UpdatedYear
的格式似乎是“dd/MM/yyyy”。通常,SQL日期以“YYYY-MM-DD”的形式访问。这是现有项目还是新项目?如果是新的,请考虑使用ORM(EntityFramework)。您正在以10年前过时的风格编写代码@尼尔,明白你的意思。感谢您指出新技术。不幸的是,这个练习对我的工作学习是强制性的。而且,我应该按照他们要求的方式只使用数据集/适配器。看起来你不知道更新是如何工作的。我不经常使用它,但从我可以告诉你的更新命令需要设置参数,而不是硬编码的值。我建议您看一下第一个示例,它会让您更好地了解如何实现您的目标。在做任何其他事情之前,您需要阅读、理解并开始使用参数化查询。这里的这种模式非常容易受到sql注入的影响。我的朋友bobby tables喜欢这样的代码。。。