我在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");
}
}
}
现在它直接转到循环之后的其他部分,现在会出现错误
答案 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();
}