我有以下几个方面,我可以让它按照我的意愿工作,但我认为我的方法是错误的,请你解释一下如何做到这一点以更有效的方式?同时也在Categories
上循环并且在Insert()
方法中与Districts
相同。更好的实现INSERT而无需多次触击数据库的方法
在此先感谢。
#region Methods
public int Insert(List<District> Districts, List<Category> Categories)
{
StringBuilder sqlString = new StringBuilder("INSERT INTO Stores (name, image) VALUES (@Name, @Image);");
using (SqlConnection sqlConnection = new
SqlConnection(ConfigurationManager.ConnectionStrings["OahuDB"].ConnectionString))
{
SqlCommand sqlCommand = new SqlCommand(sqlString.ToString(), sqlConnection);
sqlCommand.Parameters.AddWithValue("@Name", this.Name);
sqlCommand.Parameters.AddWithValue("@Image", this.Image);
sqlConnection.Open();
int x = (int)sqlCommand.ExecuteScalar();
sqlString.Clear();
sqlCommand.Parameters.Clear();
foreach (District item in Districts)
{
sqlString.AppendLine("INSERT INTO districts_has_stores (district_id, store_id) VALUES (@DistrictID, @StoreID);");
sqlCommand.CommandText = sqlString.ToString();
sqlCommand.Parameters.AddWithValue("@DistrictID", item.ID);
sqlCommand.ExecuteNonQuery();
}
return x;
}
}
编辑
是错了实现上述通过执行以下操作?
sqlString.Clear();
sqlCommand.Parameters.Clear();
sqlString.AppendLine("INSERT INTO districts_has_stores (district_id, store_id) VALUES (@DistrictID, @StoreID);");
sqlCommand.CommandText = sqlString.ToString();
sqlCommand.Parameters.AddWithValue("@StoreID", x);
foreach (District item in Districts)
{
sqlCommand.Parameters.AddWithValue("@DistrictID", item.ID);
sqlCommand.ExecuteNonQuery();
}
sqlString.Clear();
sqlCommand.Parameters.Clear();
sqlString.AppendLine("INSERT INTO categories_has_stores (category_id, store_id) VALUES (@CategoryID, @StoreID);");
sqlCommand.CommandText = sqlString.ToString();
sqlCommand.Parameters.AddWithValue("@StoreID", x);
foreach (Category item in Categories)
{
sqlCommand.Parameters.AddWithValue("@CategoryID", item.ID);
sqlCommand.ExecuteNonQuery();
}
请注意,我知道上面的方法中缺少一些东西,例如StoreID和循环继续附加INSERT语句的事实。 – user1027620 2012-07-07 16:01:17
您可以例如创建一个包含所有''DistrictID'作为列表的单个XML,然后仅调用一次'INSERT'(并使用XQuery语句从XML结构中提取单个'ID'值) – 2012-07-07 16:04:46