我有一个名为ProductProfiles
的SQL Server数据库表,其中包含产品及其信息(每行一个产品)。在我正在处理的网站上,用户可以上传.csv
文件,其中包含对产品或产品的任何或所有列的更改。
我有一个设置UPDATE
查询的功能,用于替换任何" old"包含.csv
文件中新信息的信息。我似乎没有收到任何错误(try-catch
没有报告任何错误,我在控制台中看不到任何错误)。
然而,每当上传带有更改的有效.csv
文件时,这些更改都不会进入数据库。我测试了SQL Server Management Studio中的UPDATE
查询,它似乎工作正常。
此函数具有UPDATE
查询:
private void SaveProfile(string[] curProfile)
{
string profid = "";
//have an update and an insert statement based on whether the profileid exists or is new
string ProfileID = GetValue(curProfile, (int)ProfileColumns.ProfileId).Trim();
string getProfId = "SELECT ProfileID FROM ProductProfile WHERE ProfileID = @ProfileID";
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
{
SqlCommand cmd = new SqlCommand(getProfId, cn);
cmd.Parameters.AddWithValue("@ProfileID", ProfileID);
cmd.CommandType = CommandType.Text;
cn.Open();
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
profid = reader["ProfileID"].ToString();
if (profid != "")
{
try
{
string query = "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, StockOfCust = @StockOrCust, ComponentFactor = @ComponentFactor, Visibility = @Visibility, Notes = @Notes) WHERE ProfileID = @profid";
SqlCommand cmd2 = new SqlCommand(query, cn);
cmd.CommandType = CommandType.Text;
// cn.Open();
cmd.Parameters.AddWithValue("@profid", profid);
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());
cmd.Parameters.AddWithValue("@StockOrCust", GetValue(curProfile, (int)ProfileColumns.StockOrCust).Trim());
cmd.Parameters.AddWithValue("@ComponentFactor", GetValue(curProfile, (int)ProfileColumns.ComponentFactor).Trim());
cmd.Parameters.AddWithValue("@Visibility", GetValue(curProfile, (int)ProfileColumns.Visibility).Trim());
cmd.Parameters.AddWithValue("@Notes", GetValue(curProfile, (int)ProfileColumns.Notes).Trim());
cmd.Parameters.AddWithValue("@OrderBy", GetValue(curProfile, (int)ProfileColumns.OrderBy).Trim());
int profileID = Convert.ToInt32(GetValue(curProfile, (int)ProfileColumns.ProfileId));
SaveArtchStyle(profileID, curProfile);
SaveAssignedItems(profileID, curProfile);
}
catch (Exception ex)
{
Response.Write("ERROR: " + ex.Message.ToString() + "<br />");
ErrorLabel.Text = "There was an error with the ProfileID.";
}
}
}
}
cmd.ExecuteNonQuery();
cn.Close();
}
}
此函数调用SaveProfile
函数:
protected void ProcessFileAction(string theStream)
{
try
{
int LineCount = 1;
using (StreamReader sr = new StreamReader(theStream))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (LineCount > 1 && line.Trim() != string.Empty)
{
string[] tmpArray = line.Split('\t');
//save changes
string ProfileID = GetValue(tmpArray, (int)ProfileColumns.ProfileId);
if (ProfileID != "")
SaveProfile(tmpArray);
}
LineCount++;
}
}
}
catch(Exception x)
{
Response.Write("ProcessFileAction Error: " + x.Message.ToString() + "<br />");
}
//ErrorLabel.Text += "Import Complete on <b><i>" + FileUpload1.PostedFile.FileName + "</i></b><br/>";
}
答案 0 :(得分:1)
试试这个。
private void SaveProfile(string[] curProfile)
{
string profid = "";
//have an update and an insert statement based on whether the profileid exists or is new
string ProfileID = GetValue(curProfile, (int)ProfileColumns.ProfileId).Trim();
string getProfId = "SELECT ProfileID FROM ProductProfile WHERE ProfileID = @ProfileID";
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
{
SqlCommand cmd = new SqlCommand(getProfId, cn);
cmd.Parameters.AddWithValue("@ProfileID", ProfileID);
cmd.CommandType = CommandType.Text;
cn.Open();
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
profid = reader["ProfileID"].ToString();
if (profid != "")
{
try
{
string query = "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, StockOfCust = @StockOrCust, ComponentFactor = @ComponentFactor, Visibility = @Visibility, Notes = @Notes) WHERE ProfileID = @profid";
SqlCommand cmd2 = new SqlCommand(query, cn);
cmd2.CommandType = CommandType.Text;
cmd2.Parameters.AddWithValue("@profid", profid);
cmd2.Parameters.AddWithValue("@Name", GetValue(curProfile, (int)ProfileColumns.Name).Trim());
cmd2.Parameters.AddWithValue("@Description", GetValue(curProfile, (int)ProfileColumns.Description).Trim());
cmd2.Parameters.AddWithValue("@SpeciesLink", GetValue(curProfile, (int)ProfileColumns.SpeciesLink).Trim());
cmd2.Parameters.AddWithValue("@Linedraw", GetValue(curProfile, (int)ProfileColumns.LineDraw).Trim());
cmd2.Parameters.AddWithValue("@LineDrawThumbnail", GetValue(curProfile, (int)ProfileColumns.LineDrawThumbnail).Trim());
cmd2.Parameters.AddWithValue("@ProfileThumbnail", GetValue(curProfile, (int)ProfileColumns.ProfileThumbnail).Trim());
cmd2.Parameters.AddWithValue("@ComponentThickness", GetValue(curProfile, (int)ProfileColumns.ComponentThickness).Trim());
cmd2.Parameters.AddWithValue("@ComponentWidth", GetValue(curProfile, (int)ProfileColumns.ComponentWidth).Trim());
cmd2.Parameters.AddWithValue("@FinishedThickness", GetValue(curProfile, (int)ProfileColumns.FinishedThickness).Trim());
cmd2.Parameters.AddWithValue("@FinishedWidth", GetValue(curProfile, (int)ProfileColumns.FinishedWidth).Trim());
cmd2.Parameters.AddWithValue("@ClassificationID", GetValue(curProfile, (int)ProfileColumns.ClassificationID).Trim());
cmd2.Parameters.AddWithValue("@StockOrCust", GetValue(curProfile, (int)ProfileColumns.StockOrCust).Trim());
cmd2.Parameters.AddWithValue("@ComponentFactor", GetValue(curProfile, (int)ProfileColumns.ComponentFactor).Trim());
cmd2.Parameters.AddWithValue("@Visibility", GetValue(curProfile, (int)ProfileColumns.Visibility).Trim());
cmd2.Parameters.AddWithValue("@Notes", GetValue(curProfile, (int)ProfileColumns.Notes).Trim());
cmd2.Parameters.AddWithValue("@OrderBy", GetValue(curProfile, (int)ProfileColumns.OrderBy).Trim());
int profileID = Convert.ToInt32(GetValue(curProfile, (int)ProfileColumns.ProfileId));
SaveArtchStyle(profileID, curProfile);
SaveAssignedItems(profileID, curProfile);
cmd2.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write("ERROR: " + ex.Message.ToString() + "<br />");
ErrorLabel.Text = "There was an error with the ProfileID.";
}
}
}
}
cn.Close();
}
}