我有一个插入数据的函数和一个选择数据的函数。在运行我的应用程序之前,数据库中有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个项目。
然而,当我关闭我的应用程序时,该项目不在数据库中。 为什么不坚持?