Sqldatasource连接Oracle数据库的参数,后面的代码不工作
本文关键字:代码 工作 参数 连接 Oracle 数据库 Sqldatasource | 更新日期: 2023-09-27 18:15:40
我需要在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();
好的,这是我的答案…
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;
我在web应用中使用了这个解决方案