2015-07-04 101 views
1

當我執行一個查詢表的人口時,我只有兩次出現錯誤。特別是,當名稱字段有一些像這樣的值:撇號導致查詢問題

K'Ogladbach 

現在撇號會導致一個問題,因爲查詢解釋像一個新值,這個命令,這是錯誤的。 這是我在SQL查詢結構:

string sql = @"insert into Team (name, code, shortName, squadMarketValue, 
        crestUrl, link_self, link_fixtures, link_players, caption) 
        values ('" + item.name + "', '" + item.code + "', '" + 
        item.shortName + "', '" + item.squadMarketValue + "', '" + 
        item.crestUrl + "', '" + item._links.self.href + "', '" + 
        item._links.fixtures.href + "', '" + item._links.players.href + "', '" + 
        campionato + "')"; 

如何可以看到每一個新值由' value ' rapresented, 因此,如果在價值有一個" ' "這是一個問題,因爲查詢失敗表人口。希望有一個解決方案。

+4

使用參數化查詢的另一個理由 – Steve

+1

@HaroldFinch我想知道你真的想要做什麼?你是否將SQL數據導出爲CSV? – POQDavid

+1

瞭解有關[Bobby Tables](http://bobby-tables.com/)SQL注入的更多信息。 – HABO

回答

7

使用SqlParamerterized查詢而不是原始SQL。這將有助於防止SQL注入,並提供強大的解決方案。

SqlCommand command = new SqlCommand("INSERT INTO Team (name) VALUES (@name)", con); 

command.Parameters.Add("@name", SqlDbType.NVarChar).Value = item.name; 
// Add the rest of the parameters here 

command.ExecuteNonQuery(); // Execute the command 
+0

感謝您的幫助。 –

0

SqlParamerterized疑問是最好的辦法

您還可以將取代'與'數據
這不是一個雙引號 - 這是兩個單引號
E.G. K'Ogladbach到K'Ogladbach