我正在設計一些基於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