数据库表更新无法上传文件上传

时间:2014-06-25 19:50:34

标签: c# sql sql-server sql-update

我有一个名为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/>";
}

1 个答案:

答案 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();
    }
}