.NET Framework 中的 mysql_real_escape_string()

发布于 2024-11-03 18:59:28 字数 257 浏览 0 评论 0原文

我想在.NET框架中找到一个函数来调用SQL-Server的库来转义真正发送到sql server的值,如mysql-real-escape-string() 调用 MySQL 的库在 PHP 中执行操作。
请提出一种我可以调用它的方法,它通过一次往返数据库返回转义字符串,无需执行它的查询
有吗?

i want to find a function in .NET framework to calls SQL-Server's library for escaping really a value for sending to sql server, as mysql-real-escape-string() calls MySQL's library to do in PHP.
please propose a method that i can call it and it return escaped string via one round-trip to database, no need fo executing It's query
Is there it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三生路 2024-11-10 18:59:28

你为什么要这么做?将用户输入发送到数据库的正确方法不是转义它,而是使用 查询参数

using(var command = new SqlCommand("insert into MyTable(X, Y) values(@x, @y)", connection))
{
    command.Parameters.Add("@x", textBoxX.Text);
    command.Parameters.Add("@y", textBoxY.Text);
    command.ExecuteNonQuery();
}

这提供了更好的性能,因为查询文本始终相同,因此可以缓存查询执行计划。这还可以保护您免受 SQL 注入攻击。它还允许您忽略数据格式问题(例如,DateTime 在 SQL-Server 中如何格式化?您应该如何在 SQL 中表示数字?等等)

Why do you want to do that? The correct way to send user input to the database is not to escape it, but to use query parameters.

using(var command = new SqlCommand("insert into MyTable(X, Y) values(@x, @y)", connection))
{
    command.Parameters.Add("@x", textBoxX.Text);
    command.Parameters.Add("@y", textBoxY.Text);
    command.ExecuteNonQuery();
}

This provides better performance, because the query text is always the same so the query execution plan can be cached. This also protects you against SQL injection attacks. And it also allows you to ignore data formatting issues (e.g. how is a DateTime formatted in SQL-Server? How should you represent a number in SQL? and so on)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文