这个问题搞了一个星期都没有搞定,郁闷。。偶的系统查询用户的信息,有时返回的信息是对的,有时是别人的,好奇怪。在程序里调用存储返回的结果有的对,有的不对,大多数是不对的。直接执行存储过程,全部是OK的。
根踪传过去的参数值,也是没有问题。你说这就怪了,本以为是什么静态方法,变量或代码分层造成的,可是直接在页面上访问数据库也是如此,
各位高人,你们有遇到过同样情况吗?

解决方案 »

  1.   

    还是检查下你的程序吧,sql 没有那么多的灵异事件
      

  2.   


    直接访问数据库后就打LOG,数据就不对。实在不知道哪个地方出错了
      

  3.   

    你是用什麼語言寫的?把代碼貼出來看下。
    我以前用delphi的時候碰到過很多處,語句在SQL裏執行返回結果正確,但在D裏執行就是不行
      

  4.   


     public DataSet GetMessageData(string pingCoId, string mobileId)
            {
                string connectionString = System.Configuration.ConfigurationSettings.AppSettings["HttpService.ConnectionMsgString"];
                SqlConnection cn = new SqlConnection(connectionString);            SqlCommand cmd = new SqlCommand("sp_getHttpClientMessage", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@Mobileid", SqlDbType.VarChar);
                cmd.Parameters.Add("@PingCoID", SqlDbType.VarChar);
                cmd.Parameters.Add("@Flag", SqlDbType.BigInt);
                cmd.Parameters["@Mobileid"].Value = mobileId;
                cmd.Parameters["@PingCoID"].Value = pingCoId;
                long tick = DateTime.Now.Ticks;
                cmd.Parameters["@Flag"].Value = tick;
                cn.Open();            SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();            da.Fill(ds);            cmd.Parameters.Clear();            cn.Close();            if (ds != null || ds.Tables.Count > 1)
                {
                    DataTable myDataTable = new DataTable();
                    myDataTable = ds.Tables[0];
                    int flag = 0;
                    if (myDataTable.Rows.Count > 1)
                    {
                        if (myDataTable.Rows[0]["toNumber"].ToString().Substring(0, 1) == "1")
                        {
                            if (_mobileId != myDataTable.Rows[0]["toNumber"].ToString())
                            {
                                flag = 1;
                            }
                        }
                        else
                        {
                            if (_pingCoId != myDataTable.Rows[0]["toNumber"].ToString())
                            {
                                flag = 1;
                            }
                        }                    if (flag == 1)
                        {
                            ILog messageLog = LogManager.GetLogger("MessageLog");
                            messageLog.Error("获取消息日志DAL:pingCoID " + pingCoId + " mobileID:" + mobileId + " sid:" + _sessionId + "\r\n" + "            fromNumber:" + myDataTable.Rows[0]["fromNumber"].ToString() + " toNumber:" + myDataTable.Rows[0]["toNumber"].ToString() + "内容: " + myDataTable.Rows[0]["content"].ToString());
                        }
                    }            }            return ds;
            }
      

  5.   

    if (ds != null || ds.Tables.Count > 1) -->if (ds != null || ds.Tables.Count > 0
      

  6.   

    if (myDataTable.Rows.Count > 1)-->if (myDataTable.Rows.Count > 0)
      

  7.   

    上面错了,应该改成
    if (ds != null && ds.Tables.Count > 0)