C# 数据库表更新无法执行上载文件上载

C# 数据库表更新无法执行上载文件上载,c#,sql,sql-server,sql-update,C#,Sql,Sql Server,Sql Update,我有一个名为ProductProfiles的SQL Server数据库表,其中包含产品及其信息(每行一个产品)。在我工作的网站上,用户可以上传一个.csv文件,其中包含对一个或多个产品的任何或所有列的更改 我有一个函数,可以设置一个更新查询,用.csv文件中的新信息替换任何“旧”信息。我似乎没有收到任何错误(try catch没有报告任何错误,我在控制台中没有看到任何错误) 然而,每当上传带有更改的有效.csv文件时,这些更改永远不会进入数据库。我在SQLServerManagementStud

我有一个名为
ProductProfiles
的SQL Server数据库表,其中包含产品及其信息(每行一个产品)。在我工作的网站上,用户可以上传一个
.csv
文件,其中包含对一个或多个产品的任何或所有列的更改

我有一个函数,可以设置一个
更新
查询,用
.csv
文件中的新信息替换任何“旧”信息。我似乎没有收到任何错误(try catch没有报告任何错误,我在控制台中没有看到任何错误)

然而,每当上传带有更改的有效
.csv
文件时,这些更改永远不会进入数据库。我在SQLServerManagementStudio中测试了
更新
查询,它似乎工作正常

此函数具有
更新
查询:

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();
    }
}
试试这个

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();
    }
} 
private void SaveProfile(字符串[]curProfile)
{
字符串profid=“”;
//根据profileid是否存在或是新的,生成update和insert语句
string ProfileID=GetValue(curProfile,(int)ProfileColumns.ProfileID.Trim();
string getProfId=“从ProductProfile中选择ProfileID,其中ProfileID=@ProfileID”;
使用(SqlConnection cn=new SqlConnection(ConfigurationManager.ConnectionString[“AbleCommerce”].ToString())
{
SqlCommand cmd=新的SqlCommand(getProfId,cn);
cmd.Parameters.AddWithValue(“@ProfileID”,ProfileID);
cmd.CommandType=CommandType.Text;
cn.Open();
使用(IDataReader=cmd.ExecuteReader())
{
while(reader.Read())
{
profid=reader[“ProfileID”].ToString();
如果(profid!=“”)
{
尝试
{
string query=“更新产品配置文件集(Name=@Name,Description=@Description,SpeciesLink=@SpeciesLink,LineDraw=@LineDraw,LineDrawThumbnail=@LineDrawThumbnail,ProfileThumbnail=@ProfileThumbnail,ComponentThickness=@ComponentThickness,ComponentWidth=@FinishedThickness,FinishedWidth=@FinishedWidth,ClassificationID=@Classifica)其中ProfileID=@profid”;
SqlCommand cmd2=新的SqlCommand(查询,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());
参数.AddWithValue(“@Linedraw”,GetValue(curProfile,(int)ProfileColumns.Linedraw.Trim());
参数.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());
参数.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();
}
捕获(例外情况除外)
{
Response.Write(“错误:+ex.Message.ToString()+”
); ErrorLabel.Text=“ProfileID出现错误。”; } } } } cn.Close(); } }
问题标题中提到的异常在哪里出现?发生这种情况时,运行时对象的状态如何?是否对此进行过调试?当使用调试器时,调试器在哪里失败?是否注意到update语句中没有使用OrderBy参数?您正在混合两个SQLCOMMAND。您可以将一个参数分配到
cmd
来运行select查询(为什么?),然后将SqlCommand update查询分配给
cmd2
。但是,这些参数会添加到
cmd
中,然后在循环外部调用本应使用的cmd上的
ExecuteNonQuery
<
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();
    }
}