2013-03-19 68 views
2

我正在研究一种方法,该方法创建一个名为SQL的字符串构建器,并使用SQL.Replace用值替换其中的部分内容。.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); 
     } 
    } 

所以移1 =莫林移位,但它似乎被改变为15,当它到达.WriteToDatabase(SQL.ToString()); 任何任何想法?谢谢

+1

如果你有'param10','param11','param12',然后用某些东西代替'param1'听起来非常危险; 'param10'变成'Foo0' - 是这么简单吗?但是......为什么哦为什么哦为什么你用参数替换值?那真的是参数化的错误想法 – 2013-03-19 11:18:25

+0

这是我编辑过的代码。 – Inkey 2013-03-19 11:19:50

+0

不知道如何改变任何东西... – 2013-03-19 11:20:45

回答

2

SQL.Replace("param1", ladleNo);将取代所有出现的"param1",甚至没有在"param10""param11"

说了:你真的应该用参数来代替。

+0

即使我使用25而不是15我仍然得到相同的问题 – Inkey 2013-03-19 11:25:38

+2

@Inkey确实,因为替换“param2”将影响“参数25” – 2013-03-19 11:27:40

+0

干杯得到它再次感谢 – Inkey 2013-03-19 11:39:26

4

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

+0

谢谢这不是我的代码只是代码我已被给予在 – Inkey 2013-03-19 11:22:45

+0

更改添加对查询参数的支持将是一个很好的变化:) – alex 2013-03-19 11:23:22

+0

我同意你也 – Inkey 2013-03-19 11:24:40