撇号会导致查询问题

时间:2015-07-04 12:34:19

标签: c# sql-server wpf tsql parameters

当我对表的填充执行查询时,我只在两次出现时出错。特别是,当name字段有这样的值时:

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 '提出, 所以如果在值中有一个" ' "就会出现问题,因为查询在表格填充中失败了。希望有一个解决方案。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

SqlParamerterized查询是最好的方法

您也可以在数据中替换'with a' 这不是双引号 - 它是两个单引号 例如。 K'Ogladbach到K''Ogladbach