[c# .net] odbc: IDataReader. geeft gave exception

Pagina: 1
Acties:

  • Ivo-Jonker
  • Registratie: November 2003
  • Laatst online: 26-03-2025
[c# .net] odbc: IDataReader. geeft vage exception.

Hallo post lezertje :D

Hmm, i kdacht dat ik het voor elkaar had, maar toch niet helemaal.

Anyway, mijn probleem nu dus. Ik doe op den duur dus 'n query naar wat velden, en op sommige datatypes krijg ik een cast exception.

Eerst haalde ik alles binnen met GetString() maar aangezien dat problemen leek te geven ben ik maar op een get voor ieder datatype gegaan.

Ik dacht dat mijn errors kwamen omdat er meschien een NULL value opgehaald werd waar ik niks mee kon (NVL in mn query maakte niks uit).

Mgoed, om een lang verhaal kort te maken, iemand enig idee hoe ik van mn IDataReader gewoon netjes alles kan retrieven als strings? Of meschien weet iemand wat er fout gaat?

Groetsels,
Ivo

( stukje uit de tabel:
BONNUMMER NOT NULL VARCHAR2(8)
IDNR CHAR(9)
CHARGENR NOT NULL CHAR(6)
GEPLAND_GEWICHT NOT NULL NUMBER(5,1)
RECEPTNR NOT NULL CHAR(7)
VERSIEDATUM_R NOT NULL DATE
PROCESSPEC NOT NULL VARCHAR2(9)
VERSIEDATUM_P NOT NULL DATE
PRODUCTNR NOT NULL CHAR(5)
LOTNUMMER_1 CHAR(9)
LOTNUMMER_2 CHAR(9)
)


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
while(reader.Read())
    {
    x=0;
    while (x != reader.FieldCount)
        {
        if (reader.GetDataTypeName(x).Equals("varchar2"))
            {
            excel1.Cells[y,x+1]= reader.GetString(x);
            }
        if (reader.GetDataTypeName(x).Equals("date"))
            {
            excel1.Cells[y,x+1]= reader.GetDateTime(x);
            }
        if (reader.GetDataTypeName(x).Equals("char"))
            {
            excel1.Cells[y,x+1]= reader.GetString(x);
            }
        if (reader.GetDataTypeName(x).Equals("number"))
            {
            excel1.Cells[y,x+1]= reader.GetString(x);
            }
        x++;
        }
    y++;
    }

[ Voor 3% gewijzigd door Ivo-Jonker op 27-11-2003 15:01 . Reden: Vage ipv gave exception :P ]


  • whoami
  • Registratie: December 2000
  • Nu online
code:
1
string s = Convert.ToString(reader["veldnaam"])


of
code:
1
string s = reader["veldnaam"].ToString();


't Probleem met deze constructies is nu wel dat je problemen kunt gaan krijgen met de formattering.
Het beste is dus dat je de waardes dus ophaalt mbhv het juiste datatype, en dat je het daarna naar een string convert, bv:
code:
1
string s = Convert.ToDateTime(reader["blaat"]).ToString();

of
code:
1
string s = reader.GetDateTime(0).ToString();


Heb je trouwens je code al eens gedebugged, en weet je op welke types je die cast-exception krijgt?
Weet je eigenlijk op welk statement je die exception krijgt?

[ Voor 107% gewijzigd door whoami op 27-11-2003 15:13 ]

https://fgheysels.github.io/


  • Ivo-Jonker
  • Registratie: November 2003
  • Laatst online: 26-03-2025
yups.

types char (diverse lengtes, leeg & niet leeg)
number (diverse formaten)

het rare is.
als ik b.v eerst een isdbnull doe om te checken, dan krijg ik bij number een cast error, en doen alle chars het.

doe ik de isdbnull niet dan juist andersom.

thanks voor je reply iig, dit gaat denk ik wel werken.