2017-02-17 54 views
0

我是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); 
    } 

回答

0

我不是一個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()); 
} 
+0

感謝輸入,但我這個編碼作爲學校項目的一部分,我現在我使用的WebMethod其他4級的客戶,這使得它在一個痛苦的屁股改變將WebMethod爲它做最後的客戶。 從我讀過的應該可以將一個數據集轉換爲一個字符串數組,然後在java控制檯中打印數組,但我不確定是否確切地這樣做。另外一些代碼示例對於Java和C#都會非常棒,因爲我真的是一個初學者,現在我已經堅持了幾個小時的最後一部分。 – Arkad

0

如果格式是不是一個問題,你可以導入從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); 
}