加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 02:42:27 所属栏目:安全 来源:网络整理
导读:WebService方法的返回值必须是可序列化的,因为SqlDataReader对象是不可系列化的,所以返回它会出错,现在是你又不想动用DataSet,所以你可以将返回值保存在一个数组当中返回。 WebService服务端 private SqlDataReader GetUserReader(string sUserID) ?????
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()方法。
然后将值赋值给页面上对应的控件。
转自: http://hi.baidu.com/bmlvy2006/blog/item/2939a31b0415b81c8618bf11.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读