Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > значения из DataReader считать


Автор: RedButterfly 16.9.2008, 12:26
Здравствуйте, уважаемые.

Второй день не получается решить маленький, возможно, глупый вопрос "Как считать данные из датаридера в локальные переменные?"

в таком коде 
Код

 public void CreateIDApp(int i)       // Открыть проект по ID... передаем номер
        {
             try
            {
                sqlConnectionPro = new SqlConnection();
                sqlConnectionPro.ConnectionString = connStr;        
                sqlConnectionPro.Open();
                selectValueCommand = new SqlCommand("SELECT Section, Name FROM TABLEPRO where Section=" + i.ToString() + ";", sqlConnectionPro);      

                reader = selectValueCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                while (reader.Read())
                {
                    idtab = reader.GetInt32(0);//["Section"].ToString(); 
                    Console.WriteLine( idtab); // вот тут ест-но выводится
                    nametab = reader.GetString(1);//["Name"].ToString(); 
                 }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                reader.Close();// sqlConnectionPro.Close();

            }
 Console.WriteLine("idtab = " + idtab);       // а вот тут невозможно вывести...


пишет ошибку: 
Код

Error    1    Use of unassigned local variable 'idtab'    D:\ENApp\ENApp\ENProject.cs    74    48    Pro
 Использование неназначенной локальной переменной 'idtab

мне потом считанные значения из базы данных понадобятся....
как же их считать ?

Автор: Voyager 16.9.2008, 15:32
Установи начальное значение idtab в том месте где ее объявляешь.

Автор: GGuz 17.9.2008, 02:26
Код

                SqlCommand comm = conn.CreateCommand();
                comm.CommandText = "SELECT ля-ля";
                comm.CommandType = CommandType.Text;
                SqlDataReader dr = comm.ExecuteReader();
                
                while (dr.Read())
                {
                    Console.WriteLine(dr);
                }           
        


Что то типа того, если канеш я правильно понял вопрос. smile 

Автор: Idsa 17.9.2008, 04:00
Цитата(GGuz @  17.9.2008,  06:26 Найти цитируемый пост)
while (dr.Read())
                {
                    Console.WriteLine(dr);
                }           

Скорее, так:
Код

while (dr.Read())
{
  int id = dr[0];
  string name = dr["name"];
  ...
}

Автор: RedButterfly 17.9.2008, 06:19
Цитата(Voyager @ 16.9.2008,  17:32)
Установи начальное значение idtab в том месте где ее объявляешь.

спасибо smile чмок!

вот так заработало....вернее стало видно и доступно

Код

public void CreateIDApp(int i)       // Открыть проект по ID.
        {
// вот установила значения
            int idtab = 0;
            string nametab = "";
            try
            {
                sqlConnectionPro = new SqlConnection();
                sqlConnectionPro.ConnectionString = connStr;        
                sqlConnectionPro.Open();
                selectValueCommand = new SqlCommand("SELECT Section, Name FROM TABLEPRO where Section=" + i.ToString() + ";", sqlConnectionPro);      
                reader = selectValueCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                while (reader.Read())
                {
                    idtab = reader.GetInt32(0);//["Section"].ToString(); 
                    nametab = reader.GetString(1);//["Name"].ToString(); 

                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                reader.Close();// sqlConnectionPro.Close();

            } 
// и вот тут теперь их видно!)))
            Console.WriteLine("idtab = " + idtab);
            Console.WriteLine("nametab = " + nametab);
        }


и самый главный вопрос: почему была так важна инициализация?

Добавлено через 1 минуту и 20 секунд
Цитата(GGuz @ 17.9.2008,  04:26)
Код

                SqlCommand comm = conn.CreateCommand();
                comm.CommandText = "SELECT ля-ля";
                comm.CommandType = CommandType.Text;
                SqlDataReader dr = comm.ExecuteReader();
                
                while (dr.Read())
                {
                    Console.WriteLine(dr);
                }           
        


Что то типа того, если канеш я правильно понял вопрос. smile

это уже было...

вопрос был о том , что за пределами цикла WHILE считанные данные не видны...

Добавлено через 2 минуты и 58 секунд
Цитата(Idsa @ 17.9.2008,  06:00)
Цитата(GGuz @  17.9.2008,  06:26 Найти цитируемый пост)
while (dr.Read())
                {
                    Console.WriteLine(dr);
                }           

Скорее, так:
Код

while (dr.Read())
{
  int id = dr[0];
  string name = dr["name"];
  ...
}

да. это считывание.

Автор: GGuz 17.9.2008, 11:39
RedButterfly, вот блин... не понял вопрос, уже засыпая писал.  Простите меня, я больше так не буду smile 

Автор: RedButterfly 17.9.2008, 13:45
Цитата(GGuz @ 17.9.2008,  13:39)
RedButterfly, вот блин... не понял вопрос, уже засыпая писал.  Простите меня, я больше так не буду smile

спасибо вообще за поддержку smile

мне лишний раз узнать , что пишу правильно - приятно...)))

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