2011-06-25 80 views
1

当限制为0,1时,以下代码可以正常工作,但将其限制为0,30时我无法检索记录我确定我的数据库有足够的记录数。 但是我怀疑dr [3] .ToString();如何检索所有这些。ODBC选择所有命令

string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=malla_softmail2;" + "UID=xxx;" + "PASSWORD=xxx;" + "OPTION=3"; 
     OdbcConnection MyConnection = new OdbcConnection(MyConString); 
     MyConnection.Open(); 
     OdbcCommand cmd = new OdbcCommand("Select * from awm_test where user=? limit= 0, 1", MyConnection); 
     cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = "hello"; 
     OdbcDataReader dr = cmd.ExecuteReader(); 
     if (dr.HasRows == false) 
     { 
      // throw new Exception(); 
     } 
     if (dr.Read()) 
     { 
      string a = dr[0].ToString(); 
      string b = dr[1].ToString(); 
      string c = dr[2].ToString(); 
      //string d = dr[3].ToString(); 
      //string f = dr[4].ToString(); 
      //string g = dr[5].ToString(); 

      Response.Write(a); 
      Response.Write(b); 
      Response.Write(c); 
      //Response.Write(d); 
      //Response.Write(f); 
      //Response.Write(g); 
+0

我的要求是设置一个简单的“用户搜索”页面来浏览数据库值。 – lock

+0

你确定你的桌子上有多次“你好”吗? – Binil

+0

yess我相信...! – lock

回答

2

您只处理查询返回的第一条记录。尝试:

while (dr.Read()) { 
    string firstField = dr[0].ToString(); 
    string secondField = dr[1].ToString(); 
    string thirdField = dr[2].ToString(); 

    // ... 
} 
+0

这可以只检索第一条记录。我在每条记录中有3个字段 – lock

+0

@Karthik,它将处理自'Read'()'在'while'循环中调用以来的所有记录(当然,假设您增加或删除了'LIMIT'子句)。 –

+0

非常感谢Frederic ...!这工作! – lock

0

你只需要while(dr.Read()) {...do stuff for each row...}阅读在一个循环中的行 - 每个dr.Read()移动到下一行。