C# + Ms Access

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by eregis, 24 Apr 2012.

  1. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Метод возвращает массив с 1-м элементом. Вопрос почему? И как сделать, чтобы в массиве было все, что возвращает запрос?

    Метод выборки:
    public static string[] selects()
    {
    zapros2 = "SELECT * FROM Лог";
    string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:/Kursach/Kursach.mdb;Persist Security Info=False;";
    OleDbConnection myConnection = new OleDbConnection(connectionString);
    myConnection.Open();
    OleDbCommand myCommand = myConnection.CreateCommand();
    myCommand.CommandText = zapros2;
    OleDbDataReader myDataReader = myCommand.ExecuteReader();
    string[] temp = new string[20];
    int i = 0;
    while (myDataReader.Read())
    {
    temp = (string)myDataReader["Описание"];
    i++;
    }

    myDataReader.Close();
    myConnection.Close();
    return temp;
    }

    в талице хранится более одной записи, код выбирает только одну(последнюю). А нужно все.
     
  2. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1


    А как вы обращаетесь к temp для проверки содержимого?

    В любом случае я бы переделал:

    Code:
    //Убираем
    //string[] temp = new string[20];
    //int i = 0;
    
    //Реализуем через List<>
    
    List<string> temp = new List<string>();
     while (myDataReader.Read())
        {
            temp.Add((string)myDataReader["Описание"]);
        }
    
    
     
  3. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Прошу принять мои извинения, видимо запарился сильно.. Вот просмотр:
    foreach (string value in selects())
    {
    textBox2.Text = "" + value;
    }
    А нужно было так:
    foreach (string value in selects())
    {
    textBox2.Text += "" + value;
    }

    Для тех кто затупит как я)
    С каждым шагом цыкла в textBox2 перезаписывалось значение.