簡體   English   中英

C#字符串替換問題

[英]C# string.Replace problem

我有一個像這樣的字符串:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address, @address2)"

然后我將@address替換為'Elm Street',使用

query = query.Replace("@address", "'" + "Elm Street" + "'");

結果變成:

INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, 'Elm Street', 'Elm Street'2)

如何獲得結果:

INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, 'Elm Street', @address2) ?

如果這是一個SQL查詢,那么您會出錯-您應該使用SqlParameter來對您的查詢進行參數設置,而不需要替換字符串:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address, @address2)";

using (SqlCommand cmd = new SqlCommand(query, myConnection))
{
    cmd.Parameters.Add(new SqlParameter("@address", SqlDbType.NVarChar)).Value = "Elm Street";
    //add other parameters

    cmd.ExecuteNonQuery();
}

好吧,首先我要提一提,通常您根本不應該這樣做。 您應該將值放在命令中使用的參數對象中。

如果出於某些奇怪的原因確實需要這樣做,則可以使用正則表達式來匹配所有參數,並替換其中一個參數:

query = Regex.Replace(query, @"@\w+", m => {
  if (m.Value == "@address") {
    return "'Elm Street'";
  } else {
    return m.Value;
  }
});

怎么樣:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address1, @address2)";
query = query.Replace("@address1", "'Elm Street'");

有時,最簡單的解決方案是正確的解決方案。 在這種情況下不行。 您應該真正使用SqlCommand方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM