c#代码中的循环错误

时间:2011-12-31 11:07:00

标签: c# asp.net

我在c#中有以下代码,我收到编译错误。有人可以帮帮我吗?

更新

protected void Page_Load(object sender, EventArgs e)
        {


            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|OID.mdb;Persist Security Info=False;");
            //OleDbConnection con = new OleDbConnection("Data Source=sml; User ID=sml; Password=sml; provider=OraOLEDB.Oracle");

                OleDbCommand cmd = new OleDbCommand();
                //cmd.CommandText = "Select * from EMAILS WHERE EMAIL= '" + GlobalData.Email + "'";
                cmd.CommandText = "Select * from EMAILS";
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);

                foreach (DataRow row in ds.Tables[0].Rows)
               {

                   String email = row["email"].ToString();

                    if (email == GlobalData.Email)

                   {

                       Label2.Text = GlobalData.Email;
                       Label1.Text = GlobalData.Name;
                       Label3.Text = GlobalData.LastName;



                    }
                    else
                   {

                      Response.Redirect("login.aspx");

                    }



                }
        }

现在它直接转到循环之后的其他部分,现在会出现错误

4 个答案:

答案 0 :(得分:5)

您使用(代替[

 for (I = 0; I <= ds.Tables["EMAILS"].Rows.Count - 1; I++)
 {
     String email = ds.Tables["EMAILS"].Rows[I].Item["email"];

答案 1 :(得分:1)

它应该是这样的......

for (I = 0; I <= ds.Tables["EMAILS"].Rows.Count - 1; I++)
{
    String email = ds.Tables["EMAILS"].Rows[I]["email"].ToString();
    if (email == GlobalData.Email)
    {
        Label2.Text = GlobalData.Email;
        Label1.Text = GlobalData.Name;
        Label3.Text = GlobalData.LastName;
    }
    else
    {
        Response.Redirect("login.aspx");
    }
}

答案 2 :(得分:1)

使用方括号代替括号。

for (I = 0; I <= ds.Tables["EMAILS"].Rows.Count - 1; I++)

Tables是一个返回DataTableCollection的参数,而不是方法。

答案 3 :(得分:0)

我想你是一个vb开发人员,这就是为什么你使用索引器作为()而不是你应该使用[]

for (I = 0; I <= ds.Tables["EMAILS"].Rows.Count - 1; I++)

你将接收错误下一行

String email = ds.Tables["EMAILS"].Rows[I].Item["email"];

并且......对于记录,你不应该直接准备并从codebehind调用sql。

我应该编辑我的答案。

Foreach将使它更容易使用。

foreach (DataRow  row in ds.Tables[0].Rows)
{
    //make sure that you have emil column in you datasource
    string email = row["email"].ToString();
}