Frage : Wie man ungültige Spalten mit Orakeldatenleser überspringt

Hallo enthält Experten,
the Code unterhalb der Arbeiten aber, wie ich es erhalte, um ungültige Spalten anstelle von durch einem exception
", Spalte UNGÜLTIGE Daten "

thanks
mit einzuschließen
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
public Staticlücke hauptsächlich (Schnur [] args)
        {


            OracleConnection Betrug = neues OracleConnection ();
            Betrug = neues OracleConnection („Datenquelle = **; Benutzernummer = **; Password= ** ");
            OracleCommand cmd = neues OracleCommand ();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd. Anschluss = Betrug;

            cmd.CommandText = „HE_GETGRADES“;
            cmd. Parameters.Add („grades_cursor“, OracleDbType.RefCursor);
            cmd. Parameter [„grades_cursor“]. Richtung = ParameterDirection.ReturnValue;
            cmd. Parameters.Add („vp_id“, OracleDbType.Decimal). Wert = 15000028435389;

            Betrug. Öffnen ();
            OracleDataReader Leser;
            Leser = cmd.ExecuteReader ();
            während (Leser. Gelesen ())
            {
                Console.WriteLine („\ t {0} \ t {1}“, reader.GetName (0),
                    reader.GetName (1));

                während (Leser. Gelesen ())
                {
                    Console.WriteLine („\ t {0} \ t {1}“, reader.GetString (0),
                        reader.GetString (1));
                }
                reader.NextResult ();

                //if (Leser. Gelesen ())

                // {
                // //Console.WriteLine („mein Resultat ist: “ + reader.GetString (1));
                // Console.WriteLine („{0} \ t {1}“, reader.GetString (0),
                // reader.GetString (1));

                // Console.ReadLine ();

                //}
                //else
                // {
                // Console.WriteLine („keine Reihen Found.");
                // Console.ReadLine ();
                //}
                Betrug. Abschluss ();
                Betrug. Abschaffen ();
            }
        }
    }
}

Antwort : Wie man ungültige Spalten mit Orakeldatenleser überspringt

Mit hier ist, was ich aufkam.  Wenn es noch Probleme gibt, zu meinem Test SQL bitte hinzufügen/subtrahieren, also kann ich die Störung an meinem Ende reproduzieren.

Die Datenbankgegenstände gegeben:
-----------------------------------
Bereinigung der Tropfentabelle tab1;
Tabelle tab1 (col1 Zahl, someColumn varchar2 (20), thirdColumn Putzfrau, herstellen (1));

in Werte tab1 (15000028435389, „hallo“, „Z ") einsetzen;
in Werte tab1 (25000028435389, „Welt“, „Z ") einsetzen;
in Werte tab1 (25000028435389, Null, „Z ") einsetzen;
festlegen;

Funktion myFunc (inputID Zahl) verursachen oder ersetzen
sys_refcursor zurückbringen
ist
myresult sys_refcursor;
anfangen
myresult für auserwähltes * von tab1 öffnen in dem col1=inputID;

myresult zurückbringen;
Ende;
/


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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
using System;
using System.Data;

using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

allgemeine Kategorie Bob
{

	allgemeine Staticlücke hauptsächlich (Schnur [] args)
	{


			OracleConnection Betrug = neues OracleConnection ();

			Betrug = neues OracleConnection („Benutzernummer =bud; Password=bud; Datenquelle =bud“);

			OracleCommand cmd = neues OracleCommand ();
			cmd.CommandType = CommandType.StoredProcedure;
			cmd. Anschluss = Betrug;
			cmd.CommandText = „myFunc“;

			cmd. Parameters.Add („myResult“, OracleDbType.RefCursor);

			cmd. Parameter [„myResult“]. Richtung = ParameterDirection.ReturnValue;

			cmd. Parameters.Add („myInput“, OracleDbType.Int64). Wert = 25000028435389;

			Betrug. Öffnen ();


      		OracleDataReader Leser;
			bool haveRows = falsch;

	        Leser = cmd.ExecuteReader ();
	        
	        	während (Leser. Gelesen ()) {
					Console.WriteLine („=========================");
					Console.WriteLine („Column1 hat: “ + (Convert.IsDBNull (reader.GetValue (0))? „Null“: reader.GetDecimal (0) .ToString ()));
					Console.WriteLine („Column2 hat: “ + (Convert.IsDBNull (reader.GetValue (1))? „Null“: reader.GetString (1)));
					Console.WriteLine („Column3 hat: “ + (Convert.IsDBNull (reader.GetValue (2))? „Null“: reader.GetString (2)));
					haveRows = ausrichten en;
				}


				wenn (! haveRows) {
					Console.WriteLine („keine Reihen Found.");
				}

			Betrug. Abschluss ();
			Betrug. Abschaffen ();

	}

}
Weitere Lösungen  
 
programming4us programming4us