【问题标题】:No error codes on compilation but there is no datatable on the screen and I cannot figure out why编译时没有错误代码,但屏幕上没有数据表,我不知道为什么
【发布时间】:2014-03-04 19:42:57
【问题描述】:

搜索文本框未在屏幕上返回有效的人员数据表,有人知道为什么吗?

数据库类:

static public DataTable SearchButton(string search)
{
    using (var conn = new SqlConnection(DatabaseConnectionString))
    {
        var dt = new DataTable();
        const string searchQuery = "exec SearchTerm";

        using (var cmd = new SqlCommand(searchQuery, conn))
        {
            conn.Open();
            cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value = "%" + search + "%";
            dt.Load(cmd.ExecuteReader());
            return dt;
        }
    }
}

PeopleList.aspx.cs:

protected void SearchButton_Click(object sender, EventArgs e)
{
    if (SearchTextbox.Text == null || SearchTextbox.Text == "")
    {
        PeopleListLabel.Text = "Please enter a search term!";
    }
    else
    {
        Phonelist.DataSource = Database.SearchButton(SearchTextbox.Text);
        Phonelist.DataBind();
    }  
}

SQL 存储过程:

print 'SearchTerm'
if exists (select * from sys.objects where object_id = object_id(N'[SeachTerm]') AND type in (N'P', N'PC'))
    drop procedure SearchTerm

go
    create procedure SearchTerm 
        @Search_Term varchar(64) = null
    as
    begin
    set nocount on;

    SELECT first_name, last_name, email_address, gender, home_address, home_city, home_state, home_zip_code, telephone_number
    FROM person
    WHERE first_name LIKE @Search_Term OR last_name LIKE @Search_Term
end

【问题讨论】:

    标签: c# html sql .net sql-server


    【解决方案1】:

    您需要用单引号将搜索参数括起来。

    替换这个:

    cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value 
        = "%" + search + "%";
    

    有了这个:

    cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value 
        = "'%" + search + "%'";
    

    【讨论】:

      【解决方案2】:

      您缺少 commandType。

      static public DataTable SearchButton(string search)
          {
              using (var conn = new SqlConnection(DatabaseConnectionString))
              {
                  var dt = new DataTable();
                  const string searchQuery = "exec SearchTerm";
                  using (var cmd = new SqlCommand(searchQuery, conn))
                  {
                      conn.Open();
                      cmd.CommandType = CommandType.StoredProcedure
                      cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value = "'%" + search + "%'";
                      dt.Load(cmd.ExecuteReader());
                      return dt;
                  }
              }
          }
      

      【讨论】:

      • 谢谢,但它并没有很好地工作,DataTable 返回一个空值,但搜索词正在返回输入到搜索框中的内容。因此表格中没有任何内容?(对不起,我是新手)
      • @Jake: 将搜索参数括在单引号内尝试 -> cmd.Parameters.Add("@Search_Term", SqlDbType.VarChar, search.Length).Value = "'%" + search + "%'";
      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2016-02-09
      • 2018-12-22
      • 1970-01-01
      相关资源
      最近更新 更多