2013-08-09 3 views
0

J'avais auparavant un code dans VB.NET qui cherchait une valeur dans la base de données et m'a fourni un résultat. C'était le code:Code à rechercher dans SQL pour une valeur et, si présent, exécuter un code

Class UserData 
    Dim theResults = New List(Of UserData) 
    Property Name As String 
    Property LastName As String 

End Class 

Function GetData(ByVal clientNo As Integer) As List(Of UserData) 


    Dim theResults = New List(Of UserData) 
    Dim connStr = "serverstring" 


    Using conn = New SqlConnection(connStr) 

     Dim sql = "SELECT [Name], [PaternalLastName], [MaternalLastName] FROM [SocioInfo] Where ([SocioNum] = @SocioNum)" 
     Dim sqlCmd = New SqlCommand(sql, conn) 
     sqlCmd.Parameters.AddWithValue("@SocioNum", CStr(txtInput.Text)) 



     conn.Open() 

     Dim rdr = sqlCmd.ExecuteReader 

     While rdr.Read 
      theResults.Add(New UserData With { 
          .Name = rdr.GetString(0), 
          .LastName = rdr.GetString(1), 
          .Maternal = rdr.GetString(2) 
}) 

     End While 

     conn.Close() 

    End Using 

    Return theResults 

End Function 

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click 


    Dim clientNo As Integer = 0 
    Dim myResults = GetData(clientNo) 

    If Integer.TryParse(txtInput.Text, clientNo) Then 
     If myResults.Count = 1 Then 
      Execute Code 
     Else 
      MessageBox.Show("NAH") 

     End If 
    Else 
     MessageBox.Show("NAH") 
    End If 


End Sub 

Maintenant j'ai essayé de convertir ce code en C# mais échoué misérablement. J'ai utilisé des convertisseurs que j'ai trouvés en ligne et il a jeté des exceptions donc j'ai essayé de le faire à la main mais je ne connais pas les codes ni la manière correcte de le faire puisque j'apprends encore mes cordes en C#. Si quelqu'un pouvait aider ce serait grandement apprécié :)

C# Code:

{ 
theResults = new List<UserData>(); 
public string Nombre { get; set; } 
public string Apellido { get; set; } 
public string ApellidoMaterno { get; set; } 


} 


    public List<UserData> GetData(int clientNo) 
    { 


     dynamic theResults = new List<UserData>(); 
     dynamic connStr = "Data Source=lsf-corapbk-01;Initial Catalog=Custmast_CO;Integrated Security=Yes"; 


     using (conn == new SqlConnection(connStr)) 
     { 

      dynamic sql = "SELECT [Name], [PaternalLastName], [MaternalLastName] FROM [SocioInfo] Where ([SocioNum] = @SocioNum)"; 
      dynamic sqlCmd = new SqlCommand(sql, conn); 
      sqlCmd.Parameters.AddWithValue("@SocioNum", Convert.ToString(txtInput.Text)); 



      conn.Open(); 

      dynamic rdr = sqlCmd.ExecuteReader; 

      while (rdr.Read) 
      { 
       theResults.Add(new UserData 
       { 
        Nombre = rdr.GetString(0), 
        Apellido = rdr.GetString(1), 
        ApellidoMaterno = rdr.GetString(2) 
       }); 

      } 

      conn.Close(); 

     } 

     return theResults; 

    } 

La plupart des exceptions sont dans la zone UserData.

+0

Qu'est-ce que le code C# avez-vous, et quelles parties de celui-ci vous rencontrez des problèmes avec? – Amy

+0

Les convertisseurs en ligne ne vont pas faire un aussi bon travail que la conversion manuscrite. En outre, il existe des idiomes entre VB/C# ... Si vous vous convertissez, vous apprendrez C# et ces idiomes. –

+1

Postez le code C# et les exceptions que vous obtenez à la place du code VB. –

Répondre

1
public List<UserData> GetData(int clientNo) 
    { 
     var theResults = new List<UserData>(); 
     var connStr = "serverstring"; 

     using (var cnn = new SqlConnection(connStr)) 
     { 
      cnn.Open(); 
      using (var cmd = new SqlCommand("SELECT [Name], [PaternalLastName], [MaternalLastName] FROM [SocioInfo] Where ([SocioNum] = @SocioNum)",cnn)) 
      { 
       cmd.Parameters.AddWithValue("@SocioNum", txtInput.Text); 
       using (var rdr = cmd.ExecuteReader()) 
       { 
        if (rdr.HasRows) 
        { 
         while (rdr.Read()) 
         { 
          theResults.Add(new UserData 
           { 
            Name = rdr.GetString(0), 
            LastName = rdr.GetString(1), 
            Maternal = rdr.GetString(2) 
           }); 
         } 
        } 
       } 
      } 
     } 
     return theResults; 
    } 

public class UserData 
     { 
      public string Name { get; set; } 
      public string LastName { get; set; } 
      public string Maternal { get; set; } 
     } 

Le bouton clic serait ...

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    int clientNo = 0; 
    var myResults = GetData(clientNo); 
    if (int.TryParse(txtInput.Text, clientNo)) 
    { 
     if ((myResults.Count == 1)) 
     { 
      //Execute Code 
     } 
     else 
     { 
      MessageBox.Show("NAH"); 
     } 
    } 
    else 
    { 
     MessageBox.Show("NAH"); 
    } 
} 
+0

Comment procéder pour coder la liste UserData? C'est là que la plupart des exceptions sont lancées. –

+0

D'accord, j'ai donné votre code mais ça m'a donné l'erreur suivante: Le nom de type ou d'espace de noms 'UserData' est introuvable (manque-t-il une directive using ou une référence d'assembly?) Merci pour votre temps :) –

+0

@LordRelix, je vais le formater maintenant - mais, ça devrait l'être pour le lecteur. Je suppose que vous êtes d'accord avec la partie btnSearch? – christiandev

Questions connexes