Ну, кроме вопиющих проблем с внедрением SQL, ожидающих вас укусить ..... (подсказка: использовать параметризованные запросы вместо того, чтобы объединять ваш оператор SQL !!)
Dim cmd As New SqlCommand(updatetoursql, GigsterDBConnection)
Dim sqlAdapter As New SqlDataAdapter(cmd)
Проблема здесь в следующем: если вы вызываете конструктор SqlDataAdapter таким образом, вы передаете команду select (адаптера данных), а не команду обновления!
Вам нужно сделать это следующим образом:
Dim cmd As New SqlCommand(updatetoursql, GigsterDBConnection)
Dim sqlAdapter As New SqlDataAdapter()
sqlAdapter.UpdateCommand = cmd;
Теперь вы связали свое заявление UPDATE
с SqlDataAdapter.UpdateCommand
и теперь оно должно работать.
О внедрении SQL: я бы настоятельно рекомендовал бы постоянно использовать параметризованные запросы - по крайней мере, в рабочем коде. Поэтому вместо того, чтобы объединять ваш запрос, используйте это:
Dim updatetoursql As String =
"UPDATE PLAYERS SET FIRSTNAME = @FirstName, LASTNAME = @LastName, " &
"ADDRESS = @Address, CITY = @City, ZIP = @Zip, PHONE = @Phone " &
"EMAIL = @EMail, REFFEREDBY = @ReferredBy, PLAYERID = @PlayerID"
и затем перед выполнением команды или оператора SqlDataAdapter.Update
установите для этих параметров те значения, которые у вас есть. Это намного безопаснее и дает меньше головной боли и, возможно, даже улучшения скорости (если этот единственный запрос на обновление кэшируется только один раз в памяти SQL Server).
Кроме того, зачем вообще идти длинным и сложным путем SqlDataAdapter
??
После того как вы создали SqlCommand
и настроили все параметры, просто наберите cmd.ExecuteNonQuery();
и все готово!
Dim cmd As New SqlCommand(updatetoursql, GigsterDBConnection)
// set up the parameters here.....
cmd.Parameters.AddWithvalue("@FirstName", FirstName);
... etc.
// just call ExecuteNonQuery - and you're done!
cmd.ExecuteNonQuery();