1

我正在尝试为我使用 MySQL 作为数据库和 ODBC 作为连接器的 ASP.net Web 应用程序创建一个简单的登录。现在我想通过调用 MySQL 例程而不是应用程序端 SQL 来防止 SQL 注入。

传统上,我可以运行一条 SQL 语句并接收一个表结果,我可以将它存储在一个数据类中。这样,我总是可以轻松访问例如角色等用户属性,而无需再次查询数据库。现在使用 mysql 过程或函数,似乎我只能返回简单的值,如字符串、int 或位,而不是完整的表。所以当我想拥有完整的表时,我是否必须运行 2 个查询?一个作为存储函数,如果登录成功则返回例如用户ID,另一个作为用户信息?还是函数能够返回完整的表?

4

2 回答 2

1

在 MySQL 服务器中编写表值存储过程是不可能的。MySQL 存储函数仅返回单个值。

但是,如果情况要求函数返回一组数据,您只有两种选择:

  • 您可以使用结果集的一些分隔符创建一个字符串并将其返回给调用者。
  • 另一个不错的选择是使用临时表。

更多细节在这里

也请参考mysql 文档

于 2013-01-13T17:52:39.260 回答
1

首先,我完全同意你的新方法。将 SQL 代码保留在您的应用程序之外是一个非常好的主意。

我想这取决于您的 ODBC 驱动程序。我从经验中知道您可以使用MySQL Connector for .Net。您绝对可以使用它从存储过程中获取数据集。

于 2013-01-13T17:59:52.820 回答