vb.net DBNull-zu-string-Fehler
Ich habe eine sub, die fügt nur die Werte aus einer access-db in die Textfelder. Jedoch, einige der Felder in der db null-Werte enthalten oder leer sind und dadurch verursacht wird, dass vb einen Fehler auslösen, 'Nicht konvertieren von DBNull zu string'.
Wie kann ich dieses Problem beheben basierend auf meinen geposteten code, oder wenn jemand posten könnte, ein tutorial für diese Art von Veranstaltung, wie ich bin ein neuer Benutzer, die kämpfen, um Sinn in diesem. Vielen Dank
Sub add()
While dr.Read()
txtname.Text = dr(0).ToString()
txtfathername.Text = dr(1).ToString()
txtaddress.Text = dr(2).ToString()
txtemail.Text = dr(3).ToString()
End While
End Sub
UPDATE:
Sub filllistview()
Try
'creatconn()
cn.Open()
Dim cmd As OleDbCommand = New OleDbCommand("Select * from Postings", cn)
dr = cmd.ExecuteReader()
While dr.Read()
ListView1.Items.Add(dr(0).ToString())
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(dr(1))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(dr(2))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(dr(3))
End While
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
Finally
dr.Close()
cn.Close()
End Try
End Sub
Sub showcontectsinlistview()
Try
'creatconn()
cn.Open()
Dim cmd As OleDbCommand = New OleDbCommand("select * from Postings where [Code]='" & ListView1.Text & "'", cn)
dr = cmd.ExecuteReader()
add()
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
Finally
dr.Close()
cn.Close()
End Try
End Sub
InformationsquelleAutor user1532468 | 2013-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erkennen, ob die Daten aus der Zeile leer ist, zuerst, dann ersetzen Sie es mit anderen Werten mit machen wird es in einen string, dann können Sie pass es auf deine textbox
Verwenden Sie die Funktion nichts:
Scheint es die Probleme, die Stiele auf den Teil, wenn Sie das Lesen der Daten aus der Datenbank. können Sie versuchen, ändern Sie Ihre Abfrage, nicht auf die Ausgabe von null-Werten?
etwas wie
Würde x Griff dr(0),dr(1) usw. Bitte siehe meinen früheren Kommentar. Dank
Sie können verwenden Sie x für jede Instanz von dr, Freund
Malky, die ich versucht habe nach der Einstellung den code und ersetzen mir mit, was ich dachte, war richtig, aber verursacht Fehler. ListView1.Elemente.Add(dr(0).x)
Ich starte einen neuen Beitrag, weil ich denke, wir sind umgezogen von der ursprünglichen Frage bin ich mit 50%. Vielen Dank und akzeptieren Sie bitte die Antwort.
InformationsquelleAutor Malcolm Salvador
Ich denke, Sie sollten nur prüfen, ob die Werte nicht NULL sind
Gibt es wahrscheinlich einen besseren Weg, aber...
Man könnte vielleicht eine Funktion hinzufügen, um zu überprüfen, ob der Wert NULL ist
Oder Sie könnten überprüfen, ob die Länge höher ist als 0
If dr(0).length > 0 Then txtname.Text = dr(0).ToString
.Ich dachte, so etwas wie diese es tun würde: Wenn(IsDBNull(Dr(2), string.Leer, Dr(2)), aber nicht sicher sind, wie Sie in meine Sub filllistview () - Beispiel oben. Dank
InformationsquelleAutor Merijn Den Houting
Müssen Sie überprüfen, ob der Wert
IsDBNull
erste wie sodann verwenden Sie die
value
du kannst diese Logik in eine Methode und machen die Rückkehr von dort.
oder in Ihrer Methode:
SqlDataReader.IsDBNull
überprüfen Sie auch die anderen SO Antworten: SQL-Daten-Reader - Handhabung Spalte Null-Werte
wird:
Machst du die IsDBNull überprüfen und die Rückgabe ein leerer string statt null?
Ric ich bin mit dem code, den du gepostet hast. Aber ich bin Entsendung ein weiteres Stück code, der Aufrufe der add(). Wie weiß ich, was ich fahre? Dank
Wenn Sie versuchen, Zugriff auf eine Spalte mit dem Wert der Leser zum Beispiel dr(0) Sie tun sollten, dr.IsDBNull(dr(0)) zuerst zu prüfen, für die null
Ric Wie würde das code in Sub filllistview () - Beispiel oben. Dank
InformationsquelleAutor Ric