public List<CM_SendchitInfo> GetLocalList()
        {
                List<CM_SendchitInfo> list = new List<CM_SendchitInfo>();
                string sql = "select top 5 * from SmsUNcom_send where state = '0' or sendyorn='0' and sendtime <= Getdate()";
                SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text,sql.ToString());
                while (dr.Read())
                {
                    CM_SendchitInfo cm = new CM_SendchitInfo();
                    cm.SendId = dr.GetInt32(0);
                    cm.SendMobile = dr.GetString(1);
                    cm.SendMsg = dr.GetString(2);
                    cm.SendMsgType = dr.GetInt16(3);
                    cm.SendSendyorn = dr.GetInt16(4);
                    cm.SendState = dr.GetInt16(5);
                    cm.SendTime = dr.GetDateTime(6);
                    StrSendId = StrSendId + cm.SendId + ",";
                    list.Add(cm);
                  
                    //Update();
                }
                Update(StrSendId.Remove(StrSendId.Length - 1, 1)); //提示这一行出错??
                return list;
        }
现在问题是我查询到表里没有数据时,Update(StrSendId.Remove(StrSendId.Length - 1, 1)); 这行出错,有数据没事。
这行怎么改啊?

解决方案 »

  1.   

         public List<CM_SendchitInfo> GetLocalList()
            {
                    List<CM_SendchitInfo> list = new List<CM_SendchitInfo>();
                    string sql = "select top 5 * from SmsUNcom_send where state = '0' or sendyorn='0' and sendtime <= Getdate()";
                    SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text,sql.ToString());
                    while (dr.Read())
                    {
                        CM_SendchitInfo cm = new CM_SendchitInfo();
                        cm.SendId = dr.GetInt32(0);
                        cm.SendMobile = dr.GetString(1);
                        cm.SendMsg = dr.GetString(2);
                        cm.SendMsgType = dr.GetInt16(3);
                        cm.SendSendyorn = dr.GetInt16(4);
                        cm.SendState = dr.GetInt16(5);
                        cm.SendTime = dr.GetDateTime(6);
                        StrSendId = StrSendId + cm.SendId + ",";
                        list.Add(cm);
                      
                        //Update();
                    }
                    Update(StrSendId.Remove(StrSendId.Length - 1, 1)); 
                    return list;
            }
            /// <summary>
            /// 读过之后的数据(0表示待发,1表示已经发过)
            /// </summary>
            public void Update(string StrSendId)
            {
                string sql = "update SmsUNcom_send  set sendyorn='1' where id in (" + StrSendId + ")"; 
                SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql);
            }
            /// <summary>
            /// 发送结果状态(0表示发送失败,1表示发送成功)
            /// </summary>
            public void Updates(int state, int sendory, string StrSendId)
            {
                string sql = "update SmsUNcom_send  set state ="+ state +",sendyorn="+sendory+"where id in("+StrSendId+")";
                SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,sql);
            }
            /// <summary>
            /// 调用WebService
            /// </summary> 
    这是原码
      

  2.   


    现在问题是我查询到表里没有数据时,Update(StrSendId.Remove(StrSendId.Length - 1, 1)); 这行出错,有数据没事。 
    这行怎么改啊? //---------------那就加一个保护性检查不就完了..
      

  3.   

    最简单的办法就是try
    {
    Update(StrSendId.Remove(StrSendId.Length - 1, 1)); 
    }catch(Exception ex)
    {}捕获异常 跳出你没有数据时候的报错。 有数据就不会出异常  那也就没有错。。
    不过这是极端搞法。。
      

  4.   

    if(StrSendId != null && StrSendId.Length > 0)
        Update(StrSendId.Remove(StrSendId.Length - 1, 1)); 
      

  5.   

    其实那个没数据时。你要在update里SQL拼的时候判断一下呢。。