我是Java和C#的新手,所以请耐心等待。
我在C#中创建了一个Web服务,其中.Net Framework连接到我的MSSQL Server数据库中的一个表。我在Eclipse中使用Web服务客户端创建了一个Java应用程序,该客户端通过localhost与SoapProxy连接到Visual Studio中的Web服务。
问题在于,我在C#中创建的web方法是从MSSQL返回Library表作为DataSet,我不知道如何在Java Client的控制台中调用方法和打印。
有没有更好的方法来使用webmethod将我的表从MSSQL升级到VisualStudio然后在我的Eclipse控制台中打印?
Java Web服务客户端 http://imgur.com/a/oCGzy
C#Web服务
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class WSDB : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public DataSet getBooks()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=.;database=Library;user=sa;password=1234";
SqlDataAdapter da = new SqlDataAdapter("select * from Library", con);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
我的Java Web Service Client中的代码应该如何在控制台中以最简单的方式调用和打印此DataSet? (格式不一定非常好)
更新
我尝试了一种不同的方法,使用新的WebMethod,使用ADO.Net Entity Framework连接到我的数据库。
但我仍然不知道如何在我的Java Web Client中调用和打印该方法,有什么建议吗?
[WebMethod]
public Library GetLibInfo(string booknr)
{
return libEnt.Libraries.Single(x=> x.booknr == booknr);
}
答案 0 :(得分:0)
我不是c#程序员,但是从我读到的关于数据集的内容中我发现它是一个有状态对象,你应该只从WS返回可序列化的对象。
所以把你的结果放到一个简单的数组中然后返回。
无论如何你应该这样打电话:
你应该有这样的东西:
WSDBLocator service = new WSDBLocator();
GetBooksReponseGetBookResults res = service.getGetBooks();
SomeKindOfCollection col = res.someMethod();
for(SomeKindOfObject o : col){
System.out.print(o.getProperty1());
System.out.print(",");
System.out.print(o.getProperty2());
System.out.print(",");
System.out.printLn(o.getProperty3());
}