sql >> Databáze >  >> RDS >> Sqlserver

ExecuteNonQuery() pro vložení

S tímto kódem je několik problémů.

Nejdůležitější je, že nenastavujete Připojení vlastnost, takže příkaz nemá žádný způsob, jak zjistit, jak se připojit k databázi.

Také bych důrazně doporučil využít používání a také parametrizace váš dotaz:

Nakonec nedeklarujte připojení a příkaz mimo funkci, pokud to nepotřebujete. Spojení a příkaz byste měli udržovat pouze tak dlouho, jak je potřebujete.

Vaše funkce by tedy nakonec vypadala takto:

Public Function add(ByVal area As String, ByVal user As String) As Integer

    Dim mydao As New Connection

    Using connection As New SqlConnection(mydao.ConnectionString())

        Using command As New SqlCommand()
            ' Set the connection
            command.Connection = connection 

            ' Not necessary, but good practice
            command.CommandType = CommandType.Text 

            ' Example query using parameters
            command.CommandText = "INSERT into Area (Area, user) VALUES (@area, @user)" 

            ' Adding the parameters to the command
            command.Parameters.AddWithValue("@area", area)
            command.Parameters.AddWithValue("@user", user)

            connection.Open()

            Return command.ExecuteNonQuery()

        End Using ' Dispose Command

    End Using ' Dispose (and hence Close) Connection

End Function

Všimněte si, že v současné době budete neustále vracet 0. Namísto kontroly hodnoty vrácené funkcí výše uvedený příklad jednoduše vyvolá výjimku. Díky tomu je kód o něco čistší (volající by musel pochopit, že 0 je chybový stav), a pokud byste potřebovali zpracovat výjimku, jednoduše zabalte volání této funkce do Try-Catch blok




  1. PL/SQL:ORA-00904:neplatný identifikátor &PL/SQL:Příkaz ignorován&PLS-00364:použití proměnné indexu smyčky je neplatné

  2. Zkombinujte dvě tabulky, které nemají žádná společná pole

  3. Jak zřetězit řetězce řetězcového pole v dotazu PostgreSQL „seskupit podle“?

  4. Jak efektivně převést long int na tečkovanou quad IP v bash