来自C#Web服务的Java Web服务客户端中的数据集
问题描述:
我是Java和C#中的新手,因此请耐心等待。来自C#Web服务的Java Web服务客户端中的数据集
我在C#中创建了一个Web服务,连接到我的MSSQL Server数据库中的一个表的.Net框架。我在Eclipse中使用Web服务客户端创建了一个Java应用程序,该客户端通过本地主机与SoapProxy连接到Visual Studio中的Web服务。
问题是,我在C#中创建的webmethod是从MSSQL返回库表作为DataSet,我不知道如何作为方法调用并在Java客户端的控制台中打印。
是否有任何更好的方法去web方法从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服务客户端代码看起来象调用并在控制台打印此DataSet中的最简单的最基本的方式? (格式不必是相当)
更新
我尝试了不同的方法用一个新的WebMethod,连接到我的ADO.Net实体框架数据库。
但我仍然无能为力,如何调用和打印我的Java Web客户端中的方法,有什么建议吗?
[WebMethod]
public Library GetLibInfo(string booknr)
{
return libEnt.Libraries.Single(x=> x.booknr == booknr);
}
答
我不是一个C#程序员但是从我了解的数据集我看到这是一个有状态的对象,你应该只从WS返回序列化对象。
因此,把你的结果放入一个简单的数组并返回。
反正你应该叫somethink这样的:
,你应该有这样的事情:
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());
}
答
如果格式是不是一个问题,你可以导入从DataTable中的数据转换成一个对象数组并返回它。
[WebMethod]
public object[] javaCustomer()
{
connectCronus(); //changes the ConnectionString
int count = 0;
cmd = new SqlCommand("select [Name],[City] from [CRONUS Sverige AB$Customer];");
dt = returnDataTable();
object[] ar = new string[dt.Rows.Count];
foreach (DataRow row in dt.Rows)
{
ar[count] = row["Name"].ToString() + "\t" + row["City"].ToString();
count++;
}
return ar;
}
然后,它只是打印它在你的Java客户端的问题。
for(Object o : proxy.javaEmployee()){
System.out.println(o);
}
感谢输入,但我这个编码作为学校项目的一部分,我现在我使用的WebMethod其他4级的客户,这使得它在一个痛苦的屁股改变将WebMethod为它做最后的客户。 从我读过的应该可以将一个数据集转换为一个字符串数组,然后在java控制台中打印数组,但我不确定是否确切地这样做。另外一些代码示例对于Java和C#都会非常棒,因为我真的是一个初学者,现在我已经坚持了几个小时的最后一部分。 – Arkad