Die Konvertierung von string zu int, für eine SQL-Datenbank aufrufen
Ich versuche zum ausführen einer SQL select-Anweisung abrufen, meine id, dann erhöht die id. Ich kann auswählen aus der Datenbank einfach nur gut. Aber wenn ich versuche, konvertieren Sie die Zeichenfolge in einen int, bekomme ich die Fehlermeldung, format exception abgefangen wurde
Eingabezeichenfolge hatte nicht korrekten format.
Hier ist mein code:
var sql = new SQL_Statements();
var string_sql_id ="";
var string_sql_select = "select * from is_inventory where id =(select max(id) from is_inventory)";
var sql_ds = sql.SelectFromDB(string_sql_select);
int DataIndex;
if (sql_ds.Tables["CurData"].Rows.Count > 0)
for (DataIndex = 0; DataIndex <= sql_ds.Tables["CurData"].Rows.Count - 1; DataIndex++)
{
(sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();
string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);
++int_sql_id;
}
Auf der zweiten bis letzten Zeile von code ist, wo es die Ausnahme ausgelöst. Ich habe versucht, ändern, umwandeln, zu etwas anderem wie Doppel, aber das hat nicht funktioniert entweder. Vielen Dank im Voraus für die Hilfe.
- Sie sind so viele Variable, dass ich kann nicht einmal sagen, was Sie zu tun versuchen. Können Sie fügen Sie einige Kommentare vielleicht?
- Sie müssen speichern Sie das Ergebnis von (sql_ds.Tabellen["CurData"].Zeilen[DataIndex]["id"]).ToString(); in eine lokale variable
- Einleitende alle Variablen mit Ihrem Typ ist wirklich zu Zorn der nächsten dev, liest der code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
in der Zeile, unmittelbar bevor Sie konvertieren Zeile, setzen Sie
string_sql_id ="CurData";
. "CurData" keine Ganzzahl ist, und versucht, zu konvertieren, es wird nicht funktionieren.versuchen, diese stattdessen;
(sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString()
?Für einige Grund, warum Sie sind das abrufen der Wert dann verwerfen Sie es, und dann versuchen, zu konvertieren den string
CurData
zu einer int.Den Wert
string_sql_id
ist immer nurCurData
dann - wie haben Sie es erwarten, etwas anderes zu sein?Den Wert in der Datentabelle sollten bereits eine ganze Zahl sein, so müssen Sie sich nicht jedem Parsen:
(Sie kann finden, dass es ein
long
statt einerint
- es hängt von der Art des Feldes.)Sollten Sie vermeiden Sie unnötige string-Konvertierungen, wo möglich. In diesem Fall ist es nicht klar, warum man mit einem
DataTable
überhaupt. Sie konnte sich nur mit einerDataReader
- und wenn Sie ändern Sie den code zu wählen, der max-ID, können Sie einfachExecuteScalar
um einen einzelnen Wert. Ihre aktuelle Ansatz ist sehr vielschichtig.Du versuchst co konvertieren nach int string "CurData"
Sie versuchen, zu konvertieren, die
string
"CurData" eine Ganzzahl ist, die, was das werfen der Ausnahme.Ich nehme an, du meinst zuweisen
string_sql_id
zu denRow ID
:Dann können Sie versuchen, zu konvertieren:
Sie versuchen, konvertieren primitive Typ string zu Int. So ist es etwas zu tun, mit Ihrer Logik.
Hinweis: Wenn Sie beabsichtigen, die Arbeit mit Identität ( Inkrementierendes Feld ) dann rate ich nicht explizit erstellen, inkrementelle Felder sagen Identität Spalten. Versuchen Sie, verwenden Sie Datenbank-built-in-Funktion erstellen, damit es für Sie. Google es, wie definiert, die AUTO-INKREMENT-Feld in SQL oder der db, welche Sie bevorzugen.