【问题标题】:ASP.NET ODBC Query with String parameter带有字符串参数的 ASP.NET ODBC 查询
【发布时间】:2016-07-10 16:08:54
【问题描述】:

我正在使用 tableadapter 使用 ODBC 查询数据库。查询是由 VS2015 查询生成器创建的。如果我使用可变参数创建 SQL 语句,则结果将返回空白。如果我用硬编码参数替换参数(问号),那么结果会很好。下面是我的代码,结果返回空白的示例。

SQL 语句:

SELECT HPD_Help_Desk.Incident_Number, HPD_Help_Desk.Assigned_Group
FROM   HPD_Help_Desk HPD_Help_Desk
WHERE  (HPD_Help_Desk.Incident_Number > 'INC100000230000')
AND    (HPD_Help_Desk.Assigned_Support_Organization LIKE '%?%')

我已使用参数集合编辑器设置参数成员详细信息,并将 DbType 设置为 String,这会将 ProviderType 默认为 NVarChar。其余字段我保持原样。

默认.aspx.cs:

public partial class Incidents : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    string s = "Copenhagen POD";
    HPD_Help_DeskTableAdapter incidentsAdapter = new HPD_Help_DeskTableAdapter();        
    GridView1.DataSource = incidentsAdapter.GetIncidentsByAssigned_Support_Organization(s);
    GridView1.DataBind();
    }
}

默认.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" inherits="Incidents" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<link href="Styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
    <h1>Incidents</h1>
    <p>
        <asp:GridView ID="GridView1" runat="server" CssClass="DataWebControlStyle">
           <HeaderStyle CssClass="HeaderStyle" />
           <AlternatingRowStyle CssClass="AlternatingRowStyle" />
        </asp:GridView>
        &nbsp;</p>
</div>
</form>
</body>
</html>

那么我错过了什么?使用我在 Default.aspx.cs (Copenhagen POD) 中指定的参数,我应该进行哪些更改才能使 SQL 语句正常工作?

【问题讨论】:

  • 只是猜测:语句应该是... LIKE ?),你的参数值应该是%&lt;yourvalue&gt;%。我认为 ODBC 不会在 '..' 中使用问号作为参数占位符。
  • 我听从了您的建议,但是在完成 TableAdapter 查询配置向导以及尝试构建解决方案时,我得到了“不存在从 DbType 对象到已知 OdbcType 的映射”错误。
  • 看不到您设置参数的位置。所以我一直在猜测:你可以将参数的DbType 属性设置为DbType.String(实际上应该是默认值,但无论如何)。
  • 我正在使用参数集合编辑器设置参数。根据您的建议,参数 DbType 将自身设置为 Object 从而给出错误。我再次打开参数集合编辑器,看到更多字段已自动填充,所以我继续将 DbType 从 Object 更改为 String,现在它可以工作了。因此,它使用了您的建议并对 DbType 进行了额外的更改,从而解决了我的问题。如果您写下您的第一条评论作为对我问题的回答,那么我可以选择它作为正确答案,并给予您应得的荣誉。

标签: c# sql asp.net odbc parameter-passing


【解决方案1】:

按照 René Vogt 的建议,在完成 TableAdapter 查询配置向导以及尝试构建解决方案时,我得到了“不存在从 DbType 对象到已知 OdbcType 的映射”错误。我正在使用参数集合编辑器设置参数。

仍然遵循 René Vogt 的建议,参数 DbType 将自身设置为 Object,因此出现上述错误。为了解决这个问题,我再次打开了参数集合编辑器,看到更多的字段已经自动填充,所以我继续将 DbType 从 Object 更改为 String,现在它可以工作了。因此,它使用了 René Vogt 的建议并对 DbType 进行了额外的更改,从而解决了我的问题。一周过去了,René Vogt 还没有写下他的上述评论作为对我问题的回答,这使得他有可能给予他应得的荣誉,所以我选择将答案添加到我自己的问题中。

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多