Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Работа с String[]


Автор: DZeus 20.3.2008, 16:25
Задача: Разбить DataReader по строкам, строки записать в массив строк...
Вопрос: Как правильно задать массив String[] если заранее не известен его размер?
Код


  public void createSqlStr(OdbcDataReader dr) 
        {
            String[] sqlStr ;
            
            String theString;
          
         
            while (dr.Read()) 
            {
                theString = "INSERT INTO patient (" +
                 "recid," +
                 "id_lpu," +
                 "Fname," +
                 "LName," +
                 "MName," +
                 "sn_insuarance," +
                 "date_of_birth," +
                 "pfr_code," +
                 "sex," +
                 "id_socialState," +
                 "id_insuaranceOrganization" +
                 ") VALUES (" +
                 dr["RECID"] + "," +
                 dr["MCOD"] + ",'" +
                 dr["FAM"] + "','" +
                 dr["IM"] + "','" +
                 dr["OT"] + "','" +
                 dr["SN_POL"] + "'," +
                 dr["DR"] + ",'" +
                 dr["SS"] + "'," +
                 dr["W"] + "," +
                 dr["SP"] + "," +
                 dr["Q"] + ")";

//Далее хочу theString запихать в массив sqlStr
             }

        }



 smile 

Автор: Rififi 20.3.2008, 16:37
Размерность массива нельзя переопределить после создания
используй List<T>

нет, вру. в 2.0 уже можно. но это явно не тот случай.

Автор: DZeus 20.3.2008, 16:58
А можно ли как нить узнать сколько в DataReader записей? Есть св-во FieldCount, но это столбцы.

Автор: Rififi 20.3.2008, 17:32
DZeus, 
нет, естессно. Reader тащит из БД записи до тех пор пока есть чего тащить.
для подсчёта количества записей можно воспользоваться агрегатной функцией count в sql

Автор: Voyager 20.3.2008, 18:26
Можно так:
Код

String[] sqlStr ;            
String theString;

ArrayList A = new ArrayList();
while (dr.Read()) 
{
    theString = ...;
    A.Add(theString);
}
sqlStr = (string[])A.ToArray(typeof(string));

Автор: vponomarov 20.3.2008, 18:58
по-моему лучше сразу отказаться от String[] в пользу List<String>.
если же использование String[] обязательно,то можно предварительно сделать select count()... для определения количества строк.
ну в общем подвел итог вроде бы smile 

Автор: DZeus 21.3.2008, 09:48
Всем спасибо буду юзать List<String>

Автор: QryStaL 21.3.2008, 11:23
Цитата(Rififi @  20.3.2008,  16:37 Найти цитируемый пост)
Размерность массива нельзя переопределить после создания


Array.Resize Generic Method 

Changes the size of an array to the specified new size. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)