微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决WebService[WebMethod]方法返回一个SqlDataReader出错问题

WebService方法的返回值必须是可序列化的,因为sqlDataReader对象是不可系列化的,所以返回它会出错,现在是你又不想动用DataSet,所以你可以将返回值保存在一个数组当中返回。

WebService服务端

private sqlDataReader GetUserReader(string sUserID)
        {
            string ssql = "SELECT GUID,Name,Password,Birthday,Email,Mobile,Address,UserType FROM [User] WHERE GUID=@GUID";

            sqlConnection cn = GetopenedConnection();
            cmdGetUser = new sqlCommand(ssql,cn);
            cmdGetUser.Parameters.AddWithValue("@GUID",sUserID);
            sqlDataReader reader = cmdGetUser.ExecuteReader();

            return reader;
        }

这个方法外部看不到,相当于过程函数,返回一个sqlDataReader,供下面这个方法调用

[WebMethod(Description = "获取单个用户")]
        public string[] GetUser(string sUserID)
        {
            sqlDataReader reader = GetUserReader(sUserID);
            string[] sResult = new string[8];

            if (reader.Read())
            {
                sResult[0] = reader["GUID"].ToString();
                sResult[1] = reader["Name"].ToString();
                sResult[2] = reader["Password"].ToString();
                sResult[3] = reader["Birthday"].ToString();
                sResult[4] = reader["Email"].ToString();
                sResult[5] = reader["Mobile"].ToString();
                sResult[6] = reader["Address"].ToString();
                sResult[7] = reader["UserType"].ToString();
            }

            reader.Close();
            return sResult;
        }

Web客户端

现在在客户端页面调用返回用户信息方法。如图:



主要代码
private void BindData()
        {
            if (UserID == "") return;
            string[] sUserData = myService.GetUser(ViewState["UserID"].ToString());
            txtName.Text = sUserData[ 1];
            txtEmail.Text = sUserData[ 4];
            txtMobile.Text = sUserData[ 5];
            txtAddress.Text = sUserData[ 6];
        }

定义一个sUserData数组,实例化一个webservice对象myService,调用GetUser()方法
然后将值赋值给页面上对应的控件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐