ODBC Выбрать все команды - PullRequest
1 голос
/ 25 июня 2011

Следующий код работает нормально, если ограничение равно 0,1, когда я ограничиваю их до 0,30. Я не могу получить записи. Я уверен, что в моей базе данных достаточно записей. Но я сомневаюсь в синтаксисе после dr [3] .ToString (); Как получить их все.

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);

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Вы обрабатываете только первую запись, возвращенную по вашему запросу. Попробуйте:

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

    // ...
}
0 голосов
/ 25 июня 2011

Вам просто нужно прочитать строки в цикле с помощью while(dr.Read()) {...do stuff for each row...} - каждый dr.Read() перемещается в следующую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...