.replace替换错误的值

时间:2013-03-19 11:16:12

标签: c#

我正在开发一个方法,该方法创建一个名为SQL的字符串构建器,并使用SQL.Replace将其中的部分替换为值。

在调试期间,值应该是它们应该是的。直到我到达.WriteToDatabase(SQL.ToString());那么这些值似乎被我分配给它们的数字所取代。

所以例如我有字符串移位这=早班直到我到达.WriteToDatabase。 我试过在字符串生成器和Sql中替换positining而没有任何乐趣。 代码

 public static void InsertPumaLadleControlProcessMonitoring(string ladleNo, string shift1, string LadleTemp, string Source, string Destination1, string Destination2, string Destination3, string Destination4, string pourTime, string RodsTibor, string Rodsr, string chunksMg, string DegasCycleTime, string Denisty, string OOT)
    {
        try
        {
            string operatorID = clsPublic.loggedInUserId;
            StringBuilder SQL = new StringBuilder(System.Configuration.ConfigurationManager.AppSettings.Get("InsertPumaLadleControlProcessMonitoring"));
            SQL = SQL.Replace("param1", ladleNo);
            SQL = SQL.Replace("param2", LadleTemp);
            SQL = SQL.Replace("param3", Source);
            SQL = SQL.Replace("param4", Destination1); 
            SQL = SQL.Replace("param5", Destination2);
            SQL = SQL.Replace("param6", Destination3);
            SQL = SQL.Replace("param7", Destination4);
            SQL = SQL.Replace("param8", pourTime);
            SQL = SQL.Replace("param9", Rods);
            SQL = SQL.Replace("param10", Rodsr);
            SQL = SQL.Replace("param11", chunksMg);
            SQL = SQL.Replace("param12", DegasCycleTime);
            SQL = SQL.Replace("param13", Denisty);
            SQL = SQL.Replace("param14", OOT);
            SQL = SQL.Replace("param15", shift1);

            clsPublic.sqlDB.WriteToDatabase(SQL.ToString());
        }
        catch (Exception e)
        {
            //clsPublic.appLog.Error("Cannot add Record");
            //throw new Exception("Cannot add record");
            MessageBox.Show("Cannot Add Record" + e);
        }
    }

所以Shift 1 = Moring Shift但是当它到达.WriteToDatabase(SQL.ToString())时似乎正在变为15。 任何想法?感谢

2 个答案:

答案 0 :(得分:4)

您应该使用参数,而不是将其名称替换为查询中的值。

答案 1 :(得分:2)

SQL.Replace("param1", ladleNo);将替换所有"param1",甚至是"param10""param11"等中的{{1}}。

话虽如此:你应该真正使用参数。