【发布时间】:2011-07-28 06:05:46
【问题描述】:
您好,当我尝试此操作时,我的 gridview 中没有显示任何内容:
protected void Button2_Click(object sender, EventArgs e)
{
string FirstName = TextBox2.Text;
SqlDataSource1.SelectCommand = "SELECT FirstName, SecondName FROM User WHERE FirstName LIKE '%" + FirstName + "%'";
GridView1.DataBind();
}
}
我的 sqldatasource 绑定到一个 odbc 连接字符串,所以我可以连接到一个 mysql 数据库 ASP:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ODBCDataConnectionString %>"
ProviderName="<%$ ConnectionStrings:ODBCDataConnectionString.ProviderName %>"
SelectCommand="SELECT FirstName, SecondName FROM User WHERE FirstName LIKE '%' + @qsFirstName + '%'">
<SelectParameters>
<asp:QueryStringParameter Name="qsFirstName" QueryStringField="firstname" />
</SelectParameters>
</asp:SqlDataSource>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
EnableModelValidation="True">
</asp:GridView>
</asp:Content>
【问题讨论】:
-
如果您在标记中使用参数化查询,为什么要在代码中将其更改为串联查询? (并且在此过程中引入了 SQL 注入漏洞。)
-
因为 mysql 的 sqldatasource 我不认为你不能得到参数我不知道如何为它做查询字符串
-
有没有办法将 TextBox1.Text 设置为 QueryStringParameter = qsFirstName?
-
我不确定基于声明性标记的小部件,我并没有真正使用它们。但是您绝对应该能够在 SQL 语句中使用参数。我相信 MySQL 的参数语法是在它前面加上
?而不是@。 (这是我不使用这些小部件的主要原因之一……更改 DBMS 需要更改 UI 标记。)