rdr是一个'变量'但是像'方法'一样使用

时间:2013-06-29 02:19:54

标签: c# vb.net

我正在尝试将此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();

3 个答案:

答案 0 :(得分:4)

在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();

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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