当前位置:编程学习 > C#/ASP.NET >>

大家看下这段代码能实现搜索功能吗?

user.master.aspx.cs的代码:
protected void Button1_Click(object sender, EventArgs e)
    {
        string findtype = "";
         
        switch (DropDownList1.SelectedValue)
        {
            case "名称":
                findtype = "select * from tblJiaju where jiajuName like '%" + TextBox1.Text + "%'";
                break;

            case "品牌":
                findtype = " select * from tblJiaju where brand like '%" + TextBox1.Text + "%'";
                break;
            case "材质":
                findtype = " select * from tblJiaju where material like '%" + TextBox1.Text + "%'";
                break;
        }
        Response.Cookies["findtype"].Value = findtype;

        Response.Cookies["findtype"].Expires = DateTime.Now.AddHours(1);
       Response.Redirect("findjiaju.aspx");

findjiaju.aspx.cs的代码:

--------------------编程问答-------------------- public partial class findjiaju : System.Web.UI.Page
{
    
        protected void Page_Load(object sender, EventArgs e)
    {
        String jiajuinfo;
        jiajuinfo = Request.QueryString["findtype"];
        DataTable dt = Class1.ExecSel(jiajuinfo);
        //如果搜索不到,则提示没有家具
        if (dt == null || dt.Rows.Count == 0)
        {
            Label7.Text = "没有存货";
            return;
        }
        else
        {
            //这个信息可以放在div里,这样如果搜索不到家具,则不显示div
            //现在搜索不到.显示都是空的
            int id = Convert.ToInt32(dt.Rows[0][0]);
            string info = "select * from [tblJiaju] where jiajuID=" + id;
            DataTable datatable = Class1.ExecSel(info);
            Label1.Text = dt.Rows[0][1].ToString();
            Label2.Text = dt.Rows[0][2].ToString();
            Label3.Text = dt.Rows[0][3].ToString();
            Label4.Text = dt.Rows[0][4].ToString();
            Label5.Text = dt.Rows[0][5].ToString();
            Label6.Text = dt.Rows[0][6].ToString();
            if (Convert.ToInt32(dt.Rows[0][8]) == 0)
            {
                Label7.Text = "没有存货";
            }
            if (Convert.ToInt32(dt.Rows[0][8]) == 1)
            {
                Label7.Text = "有存货";
            }
            Image1.ImageUrl = "~/picture/" + dt.Rows[0][7].ToString();
        }
    }
    } --------------------编程问答-------------------- 调用数据库的代码:


 public static DataTable ExecSel(string sql)
   

 {
        //建立连接
        SqlConnection con = Class1.DBconnection();
        con.Open();
        //查询命令
        SqlCommand com = new SqlCommand(sql, con);
        //建立适配器
        SqlDataAdapter oda = new SqlDataAdapter();
        //建立dataset
        DataSet ds = new DataSet();
        oda.SelectCommand = com;
        //传递查询结果
        oda.Fill(ds);
        con.Close();
        return ds.Tables[0];


    }



运行结果出错如下:
ExecuteReader: CommandText 属性尚未初始化 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: ExecuteReader: CommandText 属性尚未初始化

源错误: 


行 39:         oda.SelectCommand = com;
行 40:         //传递查询结果
行 41:         oda.Fill(ds);
行 42:         con.Close();
行 43:         return ds.Tables[0];
 
--------------------编程问答-------------------- 用Cookie来传递Sql代码,很有创意.

不过以后不要这么玩了.

直接用url 参数把DropDownList1.SelectedValue传递到别的网页.在那里在拼接Sql代码. --------------------编程问答-------------------- 你一步一步调试,然后就知道发生问题在哪了,那么多代码贴出来,看的眼花 --------------------编程问答-------------------- string findtype = "";
---
这个findtype应该是url参数,而不是select语句..
select语句可以到目标页面构建.. --------------------编程问答-------------------- 汗,用cookie的,有创意.
拼接还是尽量不要用的好,参数化查询比较好. --------------------编程问答-------------------- ExecuteReader: CommandText 属性尚未初始化 
============================
是不是sql语句没有传过来呀。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,