我正在设计一些基于VB的ASP.NET 2.0,并且我试图更多地使用可视化的各种ASP标签工作室提供,而不是在代码隐藏中手写所有内容。我想从会话中传入一个外部变量来确定用户是谁进行查询。ASP.NET:将外部变量传递给<asp:sqldatasource>标签ASP.NET 2.0
<asp:sqldatasource id="DataStores" runat="server" connectionstring="<%$ ConnectionStrings:MY_CONNECTION %>"
providername="<%$ ConnectionStrings:MY_CONNECTION.ProviderName %>"
selectcommand="SELECT THING1, THING2 FROM DATA_TABLE WHERE (THING2 IN (SELECT THING2 FROM RELATED_DATA_TABLE WHERE (USERNAME = @user)))"
onselecting="Data_Stores_Selecting">
<SelectParameters>
<asp:parameter name="user" defaultvalue ="" />
</SelectParameters>
</asp:sqldatasource>
而且在我后面的代码我有:
Protected Sub Data_Stores_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles Data_Stores.Selecting
e.Command.Parameters("user").Value = Session("userid")
End Sub
我甲骨文squaks与ORA-01036,非法的变量名。我在查询中声明变量是错误的吗?
我认为外部变量与@前缀共享相同的名称。从我所了解的情况来看,这应该是在执行select时将我想要的值放入查询中。
编辑:好的,感谢迄今为止的建议,第一个错误已更正,我需要使用:而不是@在查询中的变量声明。现在它生成一个ORA-01745无效的主机/绑定变量名称。
编辑再次:好吧,看起来像用户是一个保留字。它现在有效!感谢这一个其他观点。我没有想到这种方法。
LOL。我曾经有过这样的事情:D – 2008-10-14 16:06:07