2016-04-26 11 views
0

Ich bin neu mit VB.net. Ich habe Probleme, einen Null-Wert aus einem VB.net-Textfeld an die SQL-Abfragezeichenfolge zu übergeben. dies ist mein aktueller Code:NULL-Wert von Textfeld zu SQL-Abfrage übergeben

Dim sqlstatement as string 

If generic_jobTxt.Text == '' Then 
     generic_jobTxt = DBNull.Value 
    End If 

sqlstatement = "Insert into Job_db (generic_job) values('"+generic_jobTxt+"')" 

wie kann ich einen Nullwert an das SQL-String übergeben, so dass, wenn ich die SQL ausführen ich einen Nullwert in der Spalte generic_job erhalten. Vielen Dank!

+0

welche Datenbank verwenden Sie? – cableload

+0

Microsoft SQL-Server –

+2

Was passiert, wenn generic_jobTxt gleich ''ist; drop table Job_db; -'? – Will

Antwort

2

Erstens, verketten Sie nie Zeichenketten zum Erstellen Ihrer SQL-Abfrage, stattdessen verwenden Sie parametrisierte Abfragen. Ansonsten sind Sie offen für SQL-Injektion und andere Probleme. Auf diese Weise müssen Sie auch nicht mit Apostrophen herumspielen. Aber Sie sollten die richtigen Typen verwenden.

Vorausgesetzt, Sie verwenden SQL-Server und der Spaltentyp ist varchar:

Dim sqlstatement = "Insert into Job_db (generic_job) values(@generic_job)" 

Using con As New SqlConnection("connection-string") 
    Using insertCommand = New SqlCommand(sqlstatement, con) 
     Dim sqlParam = New SqlParameter("@generic_job", SqlDbType.VarChar) 
     Dim jobTxt As String = generic_jobTxt.Text.Trim() 
     sqlParam.Value = If(String.IsNullOrEmpty(jobTxt), Nothing, jobTxt) 
     insertCommand.Parameters.Add(sqlParam) 
     con.Open() 
     Dim inserted As Int32 = insertCommand.ExecuteNonQuery() 
    End Using 
End Using