带有字符串参数

时间:2016-03-23 11:29:15

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

我使用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。我剩下的其他字段就是。

Default.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();
    }
}

Default.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语句正常工作?

1 个答案:

答案 0 :(得分:1)

通过遵循RenéVogt的建议,我在完成TableAdapter Query Configuratino向导时以及在尝试构建解决方案时,得到了“从DbType对象到已知的OdbcType没有映射”错误。我使用参数集合编辑器设置参数。

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