0

以前、DB 内の値を検索して結果を提供する VB.NET のコードがありました。これはコードでした:

    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

このコードを C# に変換しようとしましたが、惨めに失敗しました。オンラインで見つけたいくつかのコンバーターを使用しましたが、例外がスローされたので、手動で試してみましたが、C#でロープをまだ学んでいるため、コードや正しい方法がわかりません。誰かがそれを助けることができれば、それは大歓迎です:)

C# コード:

{
 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;

    }

ほとんどの例外は UserData 領域にあります。

4

1 に答える 1

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; }
        }

ボタンのクリックは...

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");
    }
}
于 2013-08-09T15:55:35.090 に答える