Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从Webservice返回对象_Sql_Web Services - Fatal编程技术网

Sql 从Webservice返回对象

Sql 从Webservice返回对象,sql,web-services,Sql,Web Services,如何从web服务返回对象: [网络方法] 公共数据集GetVendors(字符串数据库) { SqlConnection sqlConn=新的SqlConnection() 如果我正确地解释了您的问题,请在数据集中用您的信息填充一个对象,并将返回类型设置为对象。或者只返回您填充的对象作为该对象。另一种方法是将数据集xml作为字符串返回,并在客户端从中创建数据集。 虽然我确信加密对象会相当简单,但当我的web服务需要加密时,这种方法帮助了我(序列化所有内容、加密该字符串、返回字符串、解密、反序列化

如何从web服务返回对象:

[网络方法] 公共数据集GetVendors(字符串数据库) { SqlConnection sqlConn=新的SqlConnection()


如果我正确地解释了您的问题,请在
数据集中用您的信息填充一个对象
,并将返回类型设置为
对象
。或者只返回您填充的对象作为该对象。

另一种方法是将数据集xml作为字符串返回,并在客户端从中创建数据集。


虽然我确信加密对象会相当简单,但当我的web服务需要加密时,这种方法帮助了我(序列化所有内容、加密该字符串、返回字符串、解密、反序列化).

如果您询问如何返回任何类型的对象,而不是
对象,那么您将需要序列化该对象。如果您试图序列化
数据集
,我建议首先将其放入
列表
或其他数据结构中。

对我来说似乎很脆弱。它假定客户端将知道如何进行序列化e序列化该对象,将客户端锁定到特定平台(例如JavaEE或.NET)


XML序列化不那么脆弱,因为它与平台无关,并且会让客户端解决解组问题。我建议过度返回对象。

不返回数据集的另一个原因是“泄漏的抽象”:为什么要将客户端暴露于与持久性层有关的任何内容中?请重新思考。

IMO从web服务返回数据集并不是一个好主意。它假设客户端了解数据集、数据表等数据结构和类。相反,我建议您使用普通CLR对象,即数据传输对象,或者如果您愿意的话您可以使用XmlNode作为数据类型。您可以使用WSE保护您的web服务

        sqlConn.ConnectionString = GetConnString(Database);

        // build query
        string strSQL = @"  SELECT      [No_] AS [VendorNo],
                                        LTRIM([Name]) AS [VendorName]

                            FROM        [********_$Vendor]

                            WHERE       LEN(RTRIM([Name])) > 0 /* avoid blank names */

                            AND         [Vendor Posting Group] = 'VEND'

                            ORDER BY    LTRIM([Name]) ASC; /* LTRIM fixes spaces before name */ ";

        SqlDataAdapter da = new SqlDataAdapter(strSQL, sqlConn);

        DataSet ds = new DataSet();

        da.Fill(ds, "Vendors");

        return (ds);
    }