后台代码如下:
public Dictionary<string, Model.Produce> getProduceInfoByPI(string PI, string Model)
        {
            //SQL命令
            string sqltxt = string.Format("SELECT [ProduceID]"+
      ",[PI]"+
     " ,[Line]"+
     " ,[Model]"+
     " ,[Station]"+
      " ,[Status]"+
     "  ,[BarCode]"+
     "  ,[Operator]"+
     "  ,[DateTime]"+ "  FROM [dbo].[Produce] Where 1=1 ");
            if (PI != "")
            {
                sqltxt += " AND  PI = '" + PI + "'  ";
            }
            if (Model != "")
            {
                sqltxt += " AND  Model = '" + Model + "' ";
            }
            sqltxt += " Order By DateTime DESC ";
            //创建生产实体
            //CMCSharpSDK.Model.Produce tmpProduce = new CMCSharpSDK.Model.Produce();
            //创建生产实体集合
            Dictionary<string, Model.Produce> ProduceCollection = new Dictionary<string, Model.Produce>();            // 从配置文件读取连接字符串
            string connectionString = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString;            // 执行 SQL 命令
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(sqltxt, conn);
                conn.Open();                using (SqlDataReader myReader = cmd.ExecuteReader(
                    CommandBehavior.CloseConnection |
                    CommandBehavior.SingleResult |
                    CommandBehavior.SingleRow))
                {
                    while (myReader.Read())
                    {
                        //将数据集转换成实体集合
                        Model.Produce tmpProduce = new Model.Produce();
                        tmpProduce.ProduceID = Convert.ToString(myReader["ProduceID"]).Trim();
                        tmpProduce.PI = Convert.ToString(myReader["PI"].ToString().Trim());
                        tmpProduce.Model = Convert.ToString(myReader["Model"]).Trim();
                        tmpProduce.Line = Convert.ToString(myReader["Line"]).Trim();
                        tmpProduce.Station = Convert.ToString(myReader["Station"]).Trim();
                        tmpProduce.Status = Convert.ToString(myReader["Status"]).Trim();
                        tmpProduce.BarCode = Convert.ToString(myReader["BarCode"]).Trim();
                        tmpProduce.DateTime = Convert.ToDateTime(myReader["DateTime"]);
                        tmpProduce.Operator = Convert.ToString(myReader["Operator"]).Trim();
                        ProduceCollection.Add(tmpProduce.ProduceID, tmpProduce);
                    }                }
            }            return ProduceCollection;
        }sql 贴出来时,是可以查到多条记录的。

解决方案 »

  1.   

    没看懂意思,输入条件查询到一条,那就是一条符合咯,不输入,where 1=1,本来就是查询所有的
      

  2.   

    不输入的话不就是执行下面这条语句吗?string sqltxt = string.Format("SELECT [ProduceID]"+
      ",[PI]"+
      " ,[Line]"+
      " ,[Model]"+
      " ,[Station]"+
      " ,[Status]"+
      " ,[BarCode]"+
      " ,[Operator]"+
      " ,[DateTime]"+ " FROM [dbo].[Produce] Where 1=1 ");sqltxt += " Order By DateTime DESC ";
      

  3.   

    输入1=1也是查询所有,这个没问题的,加1=1是为了字符串拼接其他where条件
      

  4.   

    后面发现是这样有问题:
    using (SqlDataReader myReader = cmd.ExecuteReader(
      CommandBehavior.CloseConnection |
      CommandBehavior.SingleResult |
      CommandBehavior.SingleRow))
    将上面的改为,using (SqlDataReader myReader = cmd.ExecuteReader()) 不带参的就行了不会只有一行结果了。
     之前的代码也是复制别人的,谢谢个位