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


Автор: golfV 4.11.2008, 19:27
Помогите ршеить проблему

есть таблица с помями "Имя, дата,температура"

через textBox  данные нормально заносятся в таблицу, а вот когда пытаюсь вывести в ListBox то пишет что "Conversion failed when converting the nvarchar value '1111' to data type int"

так происходит чтение из базы
Код

public OleDbDataReader dr(string sql)
        {
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = sql;
            DataReader = cmd.ExecuteReader();
            return DataReader;
        }



Обработчик кнопки для вывода
Код

 private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            Connect con = new Connect();
            OleDbDataReader dr; 
            dr = con.dr("Select Name+ birth_date+''+ data_taken+''+ temperature From Pacients");
            
           while (dr.Read())
           
            {
               string st = dr[0].ToString();
               listBox1.Items.Add(st);
              
            }
           
            con.Close();
           
            
        }



подскажите если кто знает, может можно как нить другим отобразить данные из таблици.
Спасибо заранее

Автор: Bogdan1024 4.11.2008, 19:50
Где именно (на какой строке) валиццо? Когда добавляешь айтэм в листбокс?

Автор: MasterOfCode 4.11.2008, 19:53
на какой строчке происходит ошибка?

/*опередил smile*/

Автор: Nestap 4.11.2008, 20:05
golfV, 

1 ты используеш dr два раза как function и как object DataReader 
2 Чтота не понятно  запросе sql...

Автор: golfV 4.11.2008, 20:25
ошибка вылетает в этом месте 

Код

DataReader = cmd.ExecuteReader();

Автор: Nestap 4.11.2008, 21:23
golfV, 

a tak?
Код


public OleDbDataReader dr(string sql)
        {
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = sql;
            OleDbDataReader read = cmd.ExecuteReader(); // a ne DataReade kak ti pisal ! (a read - local variable - tu katurui u tea na returne! 
             return read;
        }



Автор: Bogdan1024 4.11.2008, 21:35
Та да, это ваще уникальный (непонятный) код.
Мне кажется что ругается на SQL. 

Автор: golfV 5.11.2008, 00:27

попробовал как посоветовал Nestap, такая же ситуация 

Автор: Nestap 5.11.2008, 07:30
Код

public OleDbDataReader dr(string sql)
        {

            OleDbConnection con=new OleDbConnection(mystr_connection); //mystr_connection- eta string soedinenie s DB;
            con.Open();
            OleDbCommand cmd=new OleDbCommand(sql,con);
            OleDbDataReader reader= cmd.ExecuteReader();
            return reader;
        }


Код

private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            
            OleDbDataReader read;
            read=dr("Select Name+ birth_date+''+ data_taken+''+ temperature From Pacients");
            
           while (read.Read())
           
            {
                listBox1.Items.Add(read[0].ToString());
              
            }
           read.Cancel();
            con.Close();
           
            
        }

vot tak eta daljno eti....

udachi!


Автор: MasterOfCode 5.11.2008, 07:40
Плюсики замени на знаки ||
Код

read=dr("Select Name || ' ' || birth_date || ' ' || data_taken || ' ' || temperature From Pacients");

Автор: golfV 5.11.2008, 12:17
ничего непомогло таже ошибка, может у меня записываются данные как то неправельно?

Код

public void sqlexec(string sql) 
        {
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
            con.Close();
        }




обработчик кнопки
Код

private void button2_Click(object sender, EventArgs e)
        {
           
            Connect con = new Connect();
             if (textBox1.Text == ""|| textBox2.Text == ""||textBox4.Text==""||textBox5.Text=="")
            {
                MessageBox.Show("Error");  
 
            }
             else
             {
                 string str = "Insert Into Pacients (Name,Birth_date,Data_taken,Temperature) Values('" +  textBox1.Text + "','" + textBox2.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')";     
                 con.sqlexec(str);
            }
            
        }

Автор: MasterOfCode 5.11.2008, 12:22
Вы уж как нибудь определитесь что вам надо, вставлять запись в БД или наоборот выбирать из базы...

Автор: golfV 5.11.2008, 12:28
мне надо выбирать из базы, вставляется без ошибок

Автор: Nestap 5.11.2008, 15:42
golfV, 

У вас ДБ на чём?

Access? sql...

вот рабочий код (Acces):

Код

           string mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Nestap.GTI.seting.mdb";
            OleDbConnection con = new OleDbConnection(mystring);
            con.Open();
            string sql_access = "SELECT * FROM hosts";
            OleDbCommand cmd = new OleDbCommand(sql_access,con);
            
            OleDbDataReader sd = cmd.ExecuteReader();

        while(sd.Read())
          {
           listBox1.Items.Add(sd[0].ToString());
          }
sd.Cancel();
con.Close();


Автор: golfV 5.11.2008, 16:25
у меня база данных MS SQL express server 2005

Автор: Nestap 5.11.2008, 16:38
golfV, 

http://www.connectionstrings.com/

тут найди стринг для соединение

и всео поидиот!
если у теа дестиветелно в ДБ ести такая таблица!

Автор: golfV 5.11.2008, 18:21
 стринг для соеденения в порядке он пытается считать данные но ругается на тип переменых, в таблице 3 столбца  Char и один int , он зачем то пытается все переконвертировать в Int и поэтому выкидывает ошибку. Пробовал если читать только данные которые char то все выводит нормально.
Если кто знает подскажите почему так.


Автор: Nestap 5.11.2008, 18:25
golfV, 

а ты зделай етот запрос в MS SQl если там пойдёт токга от програмирование если нет.....

Автор: golfV 5.11.2008, 19:16
точно, на сервере этот запрос непроходит, таже ошибка  "Ошибка преобразования значения nvarchar "aaaa    10.10.2008 11.11.2008 " в тип данных int."

Автор: Nestap 5.11.2008, 19:21
golfV, 

там и разбирись.....

Автор: golfV 5.11.2008, 22:56
всё разобрался. Спасибо всем за помощь

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