rdr是一个';变量';而是像';方法';

本文关键字:变量 方法 一个 rdr | 更新日期: 2023-09-27 18:20:17

我正在尝试将此VB.NET代码转换为C#:

Protected Sub BT_KEM_CARIAN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BT_KEM_CARIAN.Click
    Dim cmd As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand("Select * from pengguna where idpengguna = @idpengguna", myconn)
    cmd.CommandType = Data.CommandType.Text
    cmd.Connection = myconn
    Try
        myconn.Open()
        Dim rdr2 As SqlDataReader
        cmd.Parameters.AddWithValue("idpengguna", KEMASKINI_MASUK.Text)
        rdr2 = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        rdr2.Read()
        KEMASKINI_ID.Text = rdr2("IDPENGGUNA").ToString
        KEMASKINI_IC.Text = rdr2("NoIC").ToString()
        KEMASKINI_NAMA.Text = rdr2("nama").ToString()
        KEMASKINI_MASUK.Text = rdr2("idpengguna").ToString()
        KEMASKINI_CAPAIAN.Text = rdr2("kodaccesslevel").ToString()
    Catch
        MsgBox("Succesfully Updated")
    End Try
    myconn.Close()
    MultiView1.SetActiveView(View4)
End Sub

结果:

protected void BT_KEM_CARIAN_Click(object sender, System.EventArgs e)
{
    System.Data.SqlClient.SqlConnection myconn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.AppSettings["DB"]);
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("Select * from pengguna where idpengguna = @idpengguna", myconn);
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.Connection = myconn;
    try {
        myconn.Open();
        SqlDataReader rdr2 = default(SqlDataReader);
        cmd.Parameters.AddWithValue("idpengguna", KEMASKINI_MASUK.Text);
        rdr2 = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        rdr2.Read();
        KEMASKINI_ID.Text = rdr2("IDPENGGUNA").ToString;
        KEMASKINI_IC.Text = rdr2("NoIC").ToString();
        KEMASKINI_NAMA.Text = rdr2("nama").ToString();
        KEMASKINI_MASUK.Text = rdr2("idpengguna").ToString();
        KEMASKINI_CAPAIAN.Text = rdr2("kodaccesslevel").ToString();
    } catch {
        Interaction.MsgBox("Succesfully Updated");
    }
    myconn.Close();
    MultiView1.SetActiveView(View4);
}

以下代码给出错误

rdr2是一个"变量",但使用起来像一个"方法"

KEMASKINI_ID.Text = rdr2("IDPENGGUNA").ToString;
KEMASKINI_IC.Text = rdr2("NoIC").ToString();
KEMASKINI_NAMA.Text = rdr2("nama").ToString();
KEMASKINI_MASUK.Text = rdr2("idpengguna").ToString();
KEMASKINI_CAPAIAN.Text = rdr2("kodaccesslevel").ToString();

rdr是一个';变量';而是像';方法';

在C#中,数组项用方括号引用,而VB中的EVERYTHING用括号引用。更改为:

KEMASKINI_ID.Text = rdr2["IDPENGGUNA"].ToString();
KEMASKINI_IC.Text = rdr2["NoIC"].ToString();
KEMASKINI_NAMA.Text = rdr2["nama"].ToString();
KEMASKINI_MASUK.Text = rdr2["idpengguna"].ToString();
KEMASKINI_CAPAIAN.Text = rdr2["kodaccesslevel"].ToString();

在VB.NET中,()既是方法调用又是索引,因此对于C#,将其更改为[]

KEMASKINI_ID.Text = rdr2["IDPENGGUNA"].ToString();

在VB.NET中,parens ()用于默认属性。在C#中,使用方括号[]。将rdr2(...)更改为rdr2[...]