1

ログインを実行するVBコードがあり、C#で機能するようにしたいと思います。これはかなり簡単だと思いましたが、間違っていました。次の行:string connString = ConfigurationManager.ConnectionStrings( "MyConnection")。ConnectionString; はConnectionStringsでエラーをスローしていますが、その理由がわかりません。また、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



            }



        }

    }
}
4

2 に答える 2

4

VB では、メソッド呼び出しと配列アクセスの間に構文の違いはなく、どちらも(argument). ただし、C# では、配列は[]. 違いを見分けることができないため、これは自動/ロート変換では適切に変換されません。そのため、自分で修正する必要があります。

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

DataRow のプロパティにアクセスする場合と同じです。

objDR["strUserName"]
     ^             ^ Convert to [] array access
于 2012-04-13T15:46:37.090 に答える
0

あなたのコードで最初に見つけた問題は次のとおりです。

objDR("strUserName")

使用する必要があります

objDR["strUserName"]

すべての出現箇所を括弧から括弧に変更します

これは、「objDR は、それが変数であると言っていますが、メソッドとして使用されていることを示しています。」というエラーを説明しています。

于 2012-04-13T15:48:45.007 に答える