繁体   English   中英

使用SqlDataSource和参数时出错

[英]Error when using SqlDataSource and Parameters

尝试使用SqlDataSource和Gridview的SelectCommand时出现以下错误。 我觉得我应该有的工作,但出现此错误; 我怀疑我已经接近,但正在忽略某些东西:

System.Data.SqlClient.SqlException (0x80131904): Invalid object name '@tbl'. 
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
at System.Data.SqlClient.SqlDataReader.get_MetaData() 
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) 
at System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) 
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) 
at System.Web.UI.WebControls.DataBoundControl.PerformSelect() 
at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() 
at System.Web.UI.WebControls.GridView.DataBind() 
at Test.BindData() in C:\Dev\Test.aspx.cs:line 45

ASPX:

   <asp:DropDownList ID="ddlTable" AutoPostBack="true" runat="server"/>

   <asp:SqlDataSource ID="sqlDS" runat="server" SelectCommand="Select * From [@tbl]">
       <SelectParameters>
            <asp:ControlParameter ControlID="ddlTable" Name="tbl" PropertyName="SelectedItem.Text" />
       </SelectParameters>
   </asp:SqlDataSource>

   <asp:GridView
    ID="grd"
    CssClass="auto"
    runat="server" 
    DataSourceID="sqlDS"
    AutoGenerateDeleteButton="true"
    AutoGenerateEditButton="true" />

码:

sqlDS.ConnectionString = "valid connection string";
grd.DataBind();

这是无效的SQL,这是您的问题。 我不确定您要获取的内容,但是您不能传递将用作表的参数。 您需要从数据库中选择查询,并且可以使用参数进行过滤或选择。 您只是不能将其用作表本身。 也许您正在寻找更多类似的东西?

Select ID From tablename where columnname = '@tbl'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM