【问题标题】:Sqldatasource connect Oracle database with parameters, code behind not workingSqldatasource用参数连接Oracle数据库,后面的代码不起作用
【发布时间】:2014-07-29 14:02:11
【问题描述】:

我需要在 SQLDatasource 中设置 3 个参数,将源绑定到 gridview。
如果我删除参数,并直接从设计视图中选择数据源,它会正确显示数据。
我猜在传递参数之后,Oracle 有一些特殊的方式来处理 SQL,但是一旦参数传递,gridview 就什么都没有显示。我怎样才能解决这个问题?

查看aspx代码:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$        ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT d.* FROM DECODATA D where (D.FAMILY like :family) AND (D.SERIES like :series) AND (D.MODEL like :model) ORDER BY D.FAMILY, D.SERIES, D.MODEL">  
         <SelectParameters>  
            <asp:Parameter Name="family" />
            <asp:Parameter Name="series" />
            <asp:Parameter Name="model" />
        </SelectParameters>
    </asp:SqlDataSource>  
The front code is automatically created.  

代码隐藏:搜索按钮:即使我这样硬编码参数,仍然无法正常工作 (此参数设置在我知道的 SQL Server 中有效)

SqlDataSource1.SelectParameters["family"].DefaultValue = "CLASSIC LOW";
            SqlDataSource1.SelectParameters["series"].DefaultValue = "%";
            SqlDataSource1.SelectParameters["model"].DefaultValue = "%";
            GridView1.DataSource = SqlDataSource1;
            GridView1.DataBind();                 

【问题讨论】:

  • 这太奇怪了。我刚刚删除了gridview控件并添加了一个新控件,它可以工作。代码运行良好。

标签: c# oracle parameters sqldatasource


【解决方案1】:

好的,这是我的答案...

 try
        {
            var oraCntStr = new OracleConnectionStringBuilder
            {
                DataSource =
                    "<something to connect to your database>",
                UserID = "<login>",
                Password = "<password>"
            };

            using (OracleConnection oraCntgv = new OracleConnection(oraCntStr.ToString()))
            {
                oraCntgv.Open();
                OracleCommand oraCmd = oraCntgv.CreateCommand();
                oraCmd.Parameters.Add(new OracleParameter("<parameter's name>", OracleDbType.Varchar2));
                oraCmd.Parameters["<parameter's name>"].Value = Unum;
                oraCmd.CommandText = @"<Select sentence with your <:parameter's name>>";
                OracleDataReader oraReader = oraCmd.ExecuteReader();

                if (oraReader.HasRows)
                {
                    GridView1.DataSource = oraReader;
                    GridView1.DataBind();
                }
                oraCmd.Dispose();
                oraReader.Close();
            }

        }
         catch (Exception err)
        {
            tbxTFStr.Text = "Something goes wrong: " + err.Message;
        }

它对我有用...这个解决方案使用 Oracle 的 ODT,不要忘记添加

using Oracle.DataAccess.Client;

我在网络应用程序中使用了这个解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多