即使我使用了System.Data.SqlClient,也没有给出.Parameters作为选项;

时间:2015-04-22 12:12:02

标签: c# asp.net visual-studio-2013

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;


namespace Bookstore
{
    public partial class search : System.Web.UI.Page
    {
        //Get the connection string from web.config
        string connectionString = ConfigurationManager.ConnectionStrings["BookstoreConnectionString"].ToString();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                FillPage();
            }
        }

        public void FillPage() 
        {
            //Check if the url contains searchString parameter
            if (!String.IsNullOrWhiteSpace(Request.QueryString["searchString"]))
            {
                string searchString = Request.QueryString["searchString"];
            }
            lblResult.Text = "";

            SqlConnection conn = new SqlConnection(connectionString);
            // query string with @search variable
            var query = "SELECT * FROM Products WHERE Name LIKE '%' + @search + '%' OR ItemNumber LIKE '%' + @search + '%' OR Price LIKE '%' + @search + '%' OR Description LIKE '%' + @search + '%' ORDER BY Name";

            try
            {
                SqlCommand search = new SqlCommand(query, conn);

                //placed the search string in the @search variable
                query.Parameters.Add("@search", SqlDbType.VarChar).Value = searchString;

                conn.Open();

                query.ExecuteNonQuery();
            }
            finally
            {
                conn.Close();
            }

        }

我是一名新的程序员,正在努力学习基础知识,我们非常感谢耐心。

我正在尝试将URL中的参数传递给查询字符串。

在上面的代码中我试图使用:

query.Parameters.Add("@search", SqlDbType.VarChar).Value = searchString;

实现这一目标。

我的问题是。参数未被识别。它下面有一条红色的波浪线。我有:在顶部使用System.Data.SqlClient所以我很难过。我已经在网上搜索了两天的解决方案,但一无所获。可能是因为我不知道这个问题的正确搜索术语。

感谢任何帮助。 谢谢, 黛安娜

2 个答案:

答案 0 :(得分:1)

query是一个字符串。您无法向字符串添加参数。您必须向SqlCommand实例search添加参数:

search.Parameters.Add("@search", SqlDbType.VarChar).Value = searchString;

或简单地说:

search.Parameters.Add("@search", searchString);

答案 1 :(得分:1)

SqlCommand对象的参数不适用于string。所以 而不是query只使用您的SqlCommand对象,即search

search.Parameters.Add("@search", SqlDbType.VarChar).Value = searchString;