我的登录从 VB.NET 到 C# 的转换问题

本文关键字:转换 问题 NET 登录 VB 我的 | 更新日期: 2023-09-27 18:31:13

好的,我有一些VB代码可以登录,我希望它现在可以在C#中工作。我以为这会很简单,但我错了。行: string connString = ConfigurationManager.ConnectionStrings("MyConnection").连接字符串;在连接字符串上抛出错误,我不知道为什么。同样在 while 语句中,objDR 说它是一个变量,但被用作一种方法。任何帮助都会很棒。 以下是整个代码:

Using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void  
    btnSubmit_Click(object sender, System.EventArgs e)
    {

        if (((string.IsNullOrEmpty(txtUserName.Text))))
        {
            lblErrorMessage.Text = "Username must be entered.";
            txtUserName.Focus();
            return;
        }

        string connString = ConfigurationManager.ConnectionStrings("MyConnection").ConnectionString;

        System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(connString);
        string sql = "Select * From TCustomers";

        System.Data.SqlClient.SqlDataReader objDR = default(System.Data.SqlClient.SqlDataReader);
        System.Data.SqlClient.SqlCommand objCmd = new System.Data.SqlClient.SqlCommand(sql, myConnection);
        myConnection.Open();

        objDR = objCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

        bool blnLogin = false;

        string strPassword = null;
        string strUserName = null;

        strPassword = txtPassword.Text;
        strPassword = strPassword.Trim();
        strUserName = txtUserName.Text;
        strUserName = strUserName.Trim();


        while (objDR.Read())
        {
            if (((objDR("strUserName").ToString().Trim() == strUserName)) & ((objDR("strPassword").ToString().Trim() == strPassword)))
            {

                blnLogin = true;

                Session["CustomerID"] = objDR("intCustomerID");
                Session["UserName"] = objDR("strUserName");
                Session["FirstName"] = objDR("strFirstName");
                Session["LastName"] = objDR("strLastName");
                Session["Email"] = objDR("strEmailAddress");
                Session["UserType"] = objDR("intUserTypeID");


                break; // TODO: might not be correct. Was : Exit While

            }

        }
    }
}

我的登录从 VB.NET 到 C# 的转换问题

在 VB 中,方法调用和数组访问之间没有语法差异,它们都使用 (argument) 。 但是,在 C# 中,数组使用 [] 。 这不能通过自动/死记硬背转换正确转换,因为无法区分,因此您必须自己修复它:

ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
                                      ^              ^ convert to [] array access

与访问数据行的属性相同:

objDR["strUserName"]
     ^             ^ Convert to [] array access

我在您的代码中发现的第一个问题如下:

objDR("strUserName")

您需要使用

objDR["strUserName"]

将所有匹配项从括号更改为括号

这解释了"objDR说它是一个变量,但被用作方法"的错误。