持久化数据表数据到数据库不起作用

时间:2016-10-07 14:55:38

标签: c# datatable localdb

我有一个插入数据的函数和一个选择数据的函数。在运行我的应用程序之前,数据库中有2个项目。之后我希望添加一个项目,但不会保留。

选择功能:

public List<Product> GetProducts()
    {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();
                    SqlDataAdapter da = new SqlDataAdapter();
                    DataSet ds = new DataSet();
                    DataTable dt = new DataTable();
                    da.SelectCommand = new SqlCommand(@"SELECT * FROM Products", conn);
                    da.Fill(ds, "Products");
                    dt = ds.Tables["Products"];

                List<Product> productList = new List<Product>();
                foreach (DataRow dr in dt.Rows)
                {
                    var product = new Product(
                       (int)dr["Id"],
                       dr["Description"].ToString(),
                       dr["OldPrice"].ToString(),
                       dr["NewPrice"].ToString());
                    productList.Add(product);
                }

                return productList;

            }

        }
        catch(Exception ex)
        {

            return null;
        }
}

插入功能:

public bool SaveProducts(List<Product> producList)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.InsertCommand = new SqlCommand("INSERT INTO Products (Description, OldPrice, NewPrice) " + "VALUES (@Description, @OldPrice, @NewPrice)", conn);
                    da.InsertCommand.Parameters.Add("@Description", SqlDbType.Text, 50, "Description");
                    da.InsertCommand.Parameters.Add("@OldPrice", SqlDbType.Text, 50, "OldPrice");
                    da.InsertCommand.Parameters.Add("@NewPrice", SqlDbType.Text, 50, "NewPrice");

                    var productsTable = new DataTable();
                    productsTable.Columns.Add("Description");
                    productsTable.Columns.Add("OldPrice");
                    productsTable.Columns.Add("NewPrice");
                    foreach (Product p in producList)
                    {
                        productsTable.Rows.Add(p.Description, p.OldPrice, p.NewPrice);
                    }
                    da.Update(productsTable);              
                    return true;


                }
            }
            catch (Exception ex)
            {

                return false;
            }


        }

在使用简单的testitem调用SaveProducts之后,我直接调用GetProducts,此时它会按预期返回3个项目。

然而,当我关闭我的应用程序时,该项目不在数据库中。 为什么不坚持?

0 个答案:

没有答案