我有一个函数,我想根据在导入文件中找到的INSERT
是否设置为当前 id 或者它是否是新的(如果它是新的,那么它被标记为“New”,“New1 ," "New2," 等在文件的列)。UPDATE
ProfileID
.csv
ProfileId
不幸的是,在保存过程中,有一些调用的函数需要使用ProfileID
. 但是如果INSERT
正在执行 an ,ProfileID
则不知道何时调用这些函数。
我已设置INSERT
查询以ProfileID
使用 插入新行后返回SCOPE_IDENTITY()
,但我不确定如何获取此结果并将其放入变量中。有没有办法做到这一点?
这是整个保存功能代码:
private void SaveProfile(string[] curProfile)
{
string profId = GetValue(curProfile, (int)ProfileColumns.ProfileId).ToLower();
string query ="";
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
{
try
{
if (profId.Contains("new"))
{
string insertQuery = "INSERT INTO ProductProfile (Name, Description, SpeciesLink, LineDraw, LineDrawThumbnail, ProfileThumbnail, ComponentThickness, ComponentWidth, FinishedThickness, FinishedWidth, ClassificationID, StockOrCust, ComponentFactor, Visibility, Notes, OrderBy) VALUES (@Name, @Description, @SpeciesLink, @LineDraw, @LineDrawThumbnail, @ProfileThumbnail, @ComponentThickness, @ComponentWidth, @FinishedThickness, @FinishedWidth, @ClassificationID, @StockOrCust, @ComponentFactor, @Visibility, @Notes, @OrderBy) SELECT SCOPE_IDENTITY()";
Response.Write("PERFORM INSERT<br />");
query = insertQuery;
}
{
string updateQuery = "UPDATE ProductProfile SET Name = @Name, Description = @Description, SpeciesLink = @SpeciesLink, LineDraw = @LineDraw, LineDrawThumbnail = @LineDrawThumbnail, ProfileThumbnail = @ProfileThumbnail, ComponentThickness = @ComponentThickness, ComponentWidth = @ComponentWidth, FinishedThickness = @FinishedThickness, FinishedWidth = @FinishedWidth, ClassificationID = @ClassificationID, StockOrCust = @StockOrCust, ComponentFactor = @ComponentFactor, Visibility = @Visibility, Notes = @Notes, OrderBy = @OrderBy WHERE ProfileID = @profid";
Response.Write("PERFORM UPDATE<br />");
query = updateQuery;
}
SqlCommand cmd = new SqlCommand(query, cn);
cmd.CommandType = CommandType.Text;
cn.Open();
cmd.Parameters.AddWithValue("@profid", GetValue(curProfile, (int)ProfileColumns.ProfileId).Trim());
cmd.Parameters.AddWithValue("@Name", GetValue(curProfile, (int)ProfileColumns.Name).Trim());
cmd.Parameters.AddWithValue("@Description", GetValue(curProfile, (int)ProfileColumns.Description).Trim());
cmd.Parameters.AddWithValue("@SpeciesLink", GetValue(curProfile, (int)ProfileColumns.SpeciesLink).Trim());
cmd.Parameters.AddWithValue("@Linedraw", GetValue(curProfile, (int)ProfileColumns.LineDraw).Trim());
cmd.Parameters.AddWithValue("@LineDrawThumbnail", GetValue(curProfile, (int)ProfileColumns.LineDrawThumbnail).Trim());
cmd.Parameters.AddWithValue("@ProfileThumbnail", GetValue(curProfile, (int)ProfileColumns.ProfileThumbnail).Trim());
cmd.Parameters.AddWithValue("@ComponentThickness", GetValue(curProfile, (int)ProfileColumns.ComponentThickness).Trim());
cmd.Parameters.AddWithValue("@ComponentWidth", GetValue(curProfile, (int)ProfileColumns.ComponentWidth).Trim());
cmd.Parameters.AddWithValue("@FinishedThickness", GetValue(curProfile, (int)ProfileColumns.FinishedThickness).Trim());
cmd.Parameters.AddWithValue("@FinishedWidth", GetValue(curProfile, (int)ProfileColumns.FinishedWidth).Trim());
cmd.Parameters.AddWithValue("@ClassificationID", GetValue(curProfile, (int)ProfileColumns.ClassificationID).Trim());
string stockCust = GetValue(curProfile, (int)ProfileColumns.StockOrCust).ToLower();
switch (stockCust)
{
case "stock":
stockCust = "0";
break;
case "custom":
stockCust = "1";
break;
case "discontinued":
stockCust = "2";
break;
}
cmd.Parameters.AddWithValue("@StockOrCust", Convert.ToInt32(stockCust));
cmd.Parameters.AddWithValue("@ComponentFactor", GetValue(curProfile, (int)ProfileColumns.ComponentFactor).Trim());
string Visibility = GetValue(curProfile, (int)ProfileColumns.Visibility).ToLower();
switch (Visibility)
{
case "public":
Visibility = "0";
break;
case "private":
Visibility = "1";
break;
}
cmd.Parameters.AddWithValue("@Visibility", Convert.ToInt32(Visibility));
cmd.Parameters.AddWithValue("@Notes", GetValue(curProfile, (int)ProfileColumns.Notes).Trim());
cmd.Parameters.AddWithValue("@OrderBy", GetValue(curProfile, (int)ProfileColumns.OrderBy).Trim());
cmd.ExecuteNonQuery();
cn.Close();
// this is the portion of the function that makes the call to other functions to complete the save process
int profileID = Convert.ToInt32(GetValue(curProfile, (int)ProfileColumns.ProfileId));
SaveArtchStyle(profileID, curProfile);
SaveAssignedItems(profileID, curProfile);
//update dimensions
//UpdateProductDimensions(profileID, GetValue(curProfile, (int)ProfileColumns.FinishedThickness).Trim(), GetValue(curProfile, (int)ProfileColumns.FinishedWidth).Trim());
}
catch (Exception ex)
{
ErrorLabel.Text = "There was an error with the file." + ex.ToString();
}
}
}