MySQL存储登录程序[返回表]

时间:2013-01-13 17:35:58

标签: c# mysql database routines

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

传统上,我可以运行SQL语句并接收表结果,我可以将其存储在数据类中。通过这种方式,我总是可以轻松访问例如用户属性,如角色等,无需再次查询数据库。 现在使用mysql过程或函数,似乎我只能返回像string,int或bit这样的简单值而不是完整的表。 所以当我想要全桌时,我是否必须运行2个查询?一个作为存储函数返回例如用户ID如果登录成功,另一个用户信息?或者是能够返回完整表格的函数吗?

2 个答案:

答案 0 :(得分:1)

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

但是,如果情况需要函数返回一组数据,则只有两个选择:

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

More details here

请参阅mysql doc too

答案 1 :(得分:1)

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

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