2014-05-17 62 views
0

我有這樣一行:如何打破一條線?

cmd.CommandText = "SELECT registeruser_id,registeruser_username, registeruser_email,registeruser_password FROM TestDB_RegisterUser where registeruser_email='" + email + "' and registeruser_password='" + pwd + "' and registeruser_rowstate<3 "; 

當我試着打在輸入字符串的一部分,我收到一大束紅色的線,指示我做了什麼被視爲錯誤。

那麼我該如何打破它呢?謝謝

+2

到谷歌 - 第一個結果將是一個答案。下次嘗試做這個**之前**在這裏問。謝謝! – zerkms

+0

'... =「選擇registeruser_id」+「...」'然後在加號後按回車鍵 –

+2

順便查一下「參數」和「sql注入」。不要只將sql字符串與用戶輸入串聯起來。 –

回答

3

是的,因爲常規字符串文字不能在源代碼中包含換行符。您可以包括一個在。然而逐字字符串

string sql = @"SELECT FOO 
       FROM BAR 
       WHERE X=Y"; 

或者用字符串連接打破它:

string sql = "SELECT FOO " + 
      "FROM BAR " + 
      "WHERE X=Y"; 

更重要的是,你目前正在建設的SQL在horribly insecure way永不像這樣直接在SQL中包含值。相反,使用參數SQL,然後爲參數的值:「如何打破C#線」如果你把你的確切名稱

string sql = "SELECT FOO FROM BAR WHERE [email protected]"; 
using (var command = new SqlCommand(sql, connection)) 
{ 
    command.Parameters.Add("@X", SqlDbType.NVarChar).Value = "..."; 
    using (var reader = command.ExecuteReader()) 
    { 
     ... 
    } 
} 
相關問題