Laden...

OverflowExeption bei NewRow()

Erstellt von Martin1000 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.985 Views
M
Martin1000 Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren
OverflowExeption bei NewRow()

verwendetes Datenbanksystem: SQL-Server

Hi,

es ist nun nach vielen Stunden und einigen Buch- sowie Internetseiten soweit, dass ich euch doch mal Frage:

Ich bekommen beim Hinzufügen einer Row zum Data-Table egal typisiertes oder untypisiertes DataSet immer o.g. Exeption.

Hatte schon vermutet, das es am Primär-Schlüssel-Feld hinsichtlich Autoinc. liegt, aber dass kann es nun nicht sein.

Ich habe nun schon das Buchbeispiel(Galileo-OpenBook) nochmal nachgebaut und erhalte gleichen Fehler.


            SqlConnection con = new SqlConnection();
            con.ConnectionString = Properties.Settings.Default.MaLoConnectionString;
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM CONTACTS WHERE MainAccountFK =" + 
                              Properties.Settings.Default.UsedMainAccount;
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.FillSchema(ds, SchemaType.Source);

            ds.Tables[0].Columns[0].AutoIncrement = true;
            ds.Tables[0].Columns[0].AutoIncrementSeed = -1;
            ds.Tables[0].Columns[0].AutoIncrementStep = -1;

            da.Fill(ds);

            DataRow row = ds.Tables[0].NewRow();
            row["MainAccountFK"] = 1;
            ds.Tables[0].Rows.Add(row);

Mit fällt auch nichts mehr dazu ein, insbesondere wenn die Meldung sowas wie "Der Wert für einen Int32 war zu groß oder zu klein." und "Dividieren sie nicht durch 0" angezeigt wird.

Was könnte mein Fehler sein?

Ich hoffe ich habe ausreichend Informationen geliefert.

Danke schon im Voraus
Martin

Vielleicht noch der StackTrace des Fehler interessant:

bei System.Convert.ToInt32(Int64 value)
bei System.Int64.System.IConvertible.ToInt32(IFormatProvider provider)
bei System.Data.Common.Int32Storage.Set(Int32 record, Object value)
bei System.Data.DataColumn.Init(Int32 record)
bei System.Data.DataTable.NewRecord(Int32 sourceRecord)
bei System.Data.DataTable.NewRow(Int32 record)
bei System.Data.DataTable.NewRow()
bei SalesHelper_Contact.ContactNew.LoadContactData() ....

S
902 Beiträge seit 2007
vor 13 Jahren

hallo,

was genau kommt für eine meldung?
StackOverflow? DivisionNUll, ZU groß für Integer?

Laut stacktrace würde ich sagen es liegt an einem wert der in int gecastet werden soll!
Wie sehen die daten in der db aus? Welchen db-typ haben sie?
Gibt es noch mehr code herum der relevant sein könnte?

mfg
serial

M
Martin1000 Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

Hi,

also die Meldungsüberschrift ist: OverflowExeption

Darin ist als weiters die Int32-Meldung und dann die DivisionsMeldung.

Zum Code ist eigentlich nichts mehr dazu, der wird in einme noch leeren Window im Ereignis "Window_Loaded" aufgerufen.

Die genannte Fehlermeldung wird bei "DataRow row = ds.Tables[0].NewRow();" angezeigt.

DB-System = MS-SQL-Server Ex.
DB-Felder mit Server-Datentyp:
ContactPK INT Autoinc.
ContactGUID uni...
MainAccountFK int (Fremdschlüssel)
Abbreviation NVARCHAR(?)
Description NVARCHAR(?)
CreatBy NVARCHAR(?)
CreatDate DateTimeOffset(7)
ModifiedBy NVARCHAR(?)
ModifiedDate DateTimeOffset(7)

(?) steht für char-Länge die ich jetzt als unwichtig emfand.

Standard-Connection-String, keine Verschlüsselung der Felddaten usw. also alles normal.

Also in einem anderem Window, lade ich die Daten über einen typisiertes Dataset usw. und zeige diese in einer Feld-Auflistung an. --> keine Probleme

Ich wollte nun ein Window erstellen indem nur Daten hinzugefügt werden können und daher eine leere DataTable erstellen und dachte mir über .New<FeldName>Row oder .NewRow ein Zeile für die Erfassung zu erstellen. Aber bisher wurde ich enttäuscht..
Vielleicht ist auch mein gewählter Weg der Falsche, doch eigenlich müsste das Thema ja gehen (jedenfalls entsprechend der Ausführungen der Literatur).

Danke für die Mühe
Martin

S
902 Beiträge seit 2007
vor 13 Jahren

Hallo,

dann wird es wohl mit dem schemaübertrag auf das dataset und das füllen einer neuen row zu tun haben.

hm....ne genaue idee hab ich gerade nicht...

mfg
serial

L
416 Beiträge seit 2008
vor 13 Jahren

Falls das Problem weiterhin besteht könntets du uns mal ein kleines Beispielprojekt (mit DB-dump) womit der Fehler reproduziert werden kann zur Verfügung stellen.