我正在尝试为ASP.net Web应用程序创建一个简单的登录,我使用MySQL作为数据库,使用ODBC作为连接器。现在我想通过调用MySQL例程而不是应用程序端SQL来阻止SQL注入。
传统上,我可以运行SQL语句并接收表结果,我可以将其存储在数据类中。通过这种方式,我总是可以轻松访问例如用户属性,如角色等,无需再次查询数据库。 现在使用mysql过程或函数,似乎我只能返回像string,int或bit这样的简单值而不是完整的表。 所以当我想要全桌时,我是否必须运行2个查询?一个作为存储函数返回例如用户ID如果登录成功,另一个用户信息?或者是能够返回完整表格的函数吗?
答案 0 :(得分:1)
在MySQL服务器中编写表值存储过程是不可能的。 MySQL存储函数仅返回单个值。
但是,如果情况需要函数返回一组数据,则只有两个选择:
请参阅mysql doc too。
答案 1 :(得分:1)
首先,我完全同意你的新方法。将SQL代码保留在应用程序之外是一个非常好的主意。
我想这取决于您的ODBC驱动程序。我从经验中知道你可以使用MySQL Connector for .Net。您绝对可以从存储过程中获取数据集。