2017-04-22 6 views
0

WebサービスでSQL Serverから複数の行を取得したい。繋ぎ番号1を検索してテーブル名がTestOrderStatusのとき、結果として2行が得られます。Webサービスとxamarin androidのSQL Serverから複数の行を取得しますか?

検索結果に1行しか表示されません。すべて

public class ReturnOrder 
{ 
    public string Message; 
    public int QtqSlit; 
    public int QtyPcs; 
    public string Design; 
} 

[WebMethod(MessageName = "OrderStatus", Description = "OrderStatus new Order")] 
[System.Xml.Serialization.XmlInclude(typeof(ReturnOrder))] 
public ReturnOrder OrderStatus(string JO) /// get list of notes 
{ 
    int QtqSlit = 0; 
    int QtyPcs = 0; 
    String Design = ""; 
    string Message = ""; 

    SqlDataReader reader; 
    using (SqlConnection connection = new SqlConnection(DBConnection.ConnectionString)) 
    { 
     SqlCommand cmd = new SqlCommand("SELECT QtqSlit,QtyPcs,Design FROM TestOrderStatus where [email protected]"); 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = connection; 
     cmd.Parameters.AddWithValue("@JO", JO); 

     connection.Open(); 

     reader = cmd.ExecuteReader(); 

     while (reader.Read()) 
     { 
      for (int i = 0; i < reader.FieldCount; i++) 
      { 
       QtqSlit = reader.GetInt32(0); 
       QtyPcs = reader.GetInt32(1); 
       Design = reader.GetString(2); 
      } 
     } 

     if (QtqSlit == 0) 
     { 
      Message = " user name or password is incorrect"; 
     } 

     reader.Close(); 
     connection.Close(); 
    } 

    ReturnOrder rt = new ReturnOrder(); 
    rt.Message = Message; 
    rt.QtqSlit = QtqSlit; 
    rt.QtyPcs = QtyPcs; 
    rt.Design = Design; 

    return rt; 
} 
+0

コード パブリッククラスReturnOrder {パブリック文字列メッセージの残りの部分。 public int QtqSlit; public int QtyPcs; public string design; } –

+0

まず、内部forループは必要ありません。これにより、現在のレコードの3つのフィールドが3回読み込まれます。 1つで十分です。 2番目のwhileループは、最初のループ(最初のレコード)の後に再度実行され、最初のループにロードされた値を置き換えます(3つのレコードがある場合は、再度実行されます)。あなたはただ一つのレコードで終わり、最後のものは – Steve

答えて

0

ウェブサービスは大丈夫です、ありがとうございました。しかし、彼がXamrianの値を呼び出すと、わかりません。

パブリッククラスMainlistview:活動 {保護オーバーライドボイドOnCreate関数(バンドルのバンドル) {base.OnCreate(バンドル)。

 // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.Mainlistview); 


     ListView ListView = FindViewById<ListView>(Resource.Id.listView1); 



     Selling.WebServiceDB ws = new Selling.WebServiceDB(); 
     ws.OrderStatusListCompleted += Ws_OrderStatusListCompleted; 
     ws.OrderStatusListAsync(Convert.ToString(1)); 



    } 


    private void Ws_OrderStatusListCompleted(object sender, Selling.OrderStatusListCompletedEventArgs e) 
    { 

     ListView ListView = FindViewById<ListView>(Resource.Id.listView1); 
     string msg = ""; 

     if (e.Result.QtqSlit.ToString().Equals("0")) 
     { 
      msg = e.Result.Message; 
     } 
     else 
     { 

      // full class 
      List<TableItem> tableItems = new List<TableItem>(); 
      tableItems.Add(new TableItem("" + e.Result.QtqSlit, "" + e.Result.QtyPcs, Resource.Drawable.Icon)); 
      ListView.Adapter = new HomeScreenAdapter(this, tableItems); 


     } 

    } 
1

ため

おかげで、あなたが複数の結果が必要な場合は、複数行のリストを必要としています。だからあなたのコードはこのようなものかもしれません。

public class ReturnOrder 
{ 
    public string Message; 
    public int QtqSlit; 
    public int QtyPcs; 
    public string Design; 


} 


[WebMethod(MessageName = "OrderStatus", Description = "OrderStatus new Order")] 
[System.Xml.Serialization.XmlInclude(typeof(List<ReturnOrder>))] 
public List<ReturnOrder> OrderStatus(string JO) /// get list of notes 
{ 
    List<ReturnOrder> result=new List<ReturnOrder>(); 
    int QtqSlit = 0; 
    int QtyPcs = 0; 
    String Design = ""; 
    string Message = ""; 

    //try 
    //{ 
     SqlDataReader reader; 
     using (SqlConnection connection = new SqlConnection(DBConnection.ConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT QtqSlit,QtyPcs,Design FROM TestOrderStatus where [email protected]"); 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = connection; 
      cmd.Parameters.AddWithValue("@JO", JO); 
      connection.Open(); 

      reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
        QtqSlit = reader.GetInt32(0); 
        QtyPcs = reader.GetInt32(1); 
        Design = reader.GetString(2); 

    ReturnOrder rt = new ReturnOrder(); 
    rt.Message = Message; 
    rt.QtqSlit = QtqSlit; 
    rt.QtyPcs = QtyPcs; 
    rt.Design = Design; 

result.add(rt); 


      } 
      if (QtqSlit == 0) 
      { 
       Message = " user name or password is in correct"; 
      } 
      reader.Close(); 

      connection.Close(); 
     } 

    //} 
    //catch (Exception ex) 
    //{ 
    // Message = " cannot access to the data"; 
    //} 




    return result; 
} 
+0

です。今は大丈夫ですが、Webサービスは大丈夫です。しかし、彼がXamrianの値を呼び出すと、わかりません。 –

+0

遅くとも申し訳ありませんが返されたデータ型を変更しましたリスト Xamarianにありますか? – wikiCan

関連する問題