2

我正在研究一种创建名为 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 任何人有什么想法吗?谢谢

4

2 回答 2

4

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

于 2013-03-19T11:18:29.737 回答
2

SQL.Replace("param1", ladleNo);将替换所有出现的"param1",甚至是"param10"等中的出现"param11"

话虽如此:您确实应该使用参数。

于 2013-03-19T11:19:27.457 回答