Обновление записи с помощью SQL in VB.NET
Когда я пытаюсь обновить базу данных, никаких ошибок, приводящих к сбою программы, не происходит. Однако база данных не обновляется. Когда я захожу в окно отладки вывода он говорит следующее:
Exception thrown: 'System.InvalidOperationException' in System.Data.dll
Вывод окна сообщения (тот, который выводит row_affected - результат выполнения nonquery) действительно отображает 1, что является правильным количеством строк, на которые он должен повлиять.
(Извините, если я не отформатировал это правильно, так как это мой первый раз, когда я использую сайт)
Спасибо.
Что я уже пробовал:
Try Dim rows_affected As Integer Using Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\UserInfo.mdb") Using cmd As New OleDbCommand("UPDATE table1 SET TotalCorrect = @TotCorr , TotalAnswered = @TotAnswered , TotalAcc = @TotAcc WHERE username = @userName", Conn) cmd.Parameters.Add("@TotCorr", SqlDbType.Int).Value = USerInfoDataArray(0, 0) cmd.Parameters.Add("@TotAnswered", SqlDbType.Int).Value = USerInfoDataArray(0, 1) cmd.Parameters.Add("@TotAcc", SqlDbType.Int).Value = USerInfoDataArray(0, 2) cmd.Parameters.Add("@username", SqlDbType.Text).Value = LoginForm.txtUsername.Text Conn.Open() rows_affected = cmd.ExecuteNonQuery() MessageBox.Show(rows_affected) End Using End Using Catch ex As OleDbException MessageBox.Show(ex.ToString()) End Try
CHill60
Когда вы проходите через свой код в отладчике, это Conn.Откройте строку, которая вызывает это исключение, или cmd.ExcecuteNonQuery?
Есть ли в этом определенные данные USerInfoDataArray
in is there text in that text box - похоже, что один из элементов массива может быть нулевым
DuskRope
Привет, спасибо за ваш ответ.
Оказывается, когда я перехожу через код, исключение выбрасывается задолго до этого момента в программе - в той части программы, которая работает нормально. Я также посмотрел в элементах массивов, и они полностью заполнены нулевыми значениями none. Текстовое поле, на которое он ссылается, также имеет значение in.
phil.o
Если "часть программы, которая работает нормально" вызывает исключение, это может быть не так хорошо, как вы думаете. Просто говорю: :)
CHill60
Как и во всем остальном - начните с самого начала ... исправьте то исключение, которое было выброшено ранее - оно явно есть нет все работает нормально.
Если во всех параметрах есть значения, то в базе данных не должно быть ни одной строки к которому вы подключаетесь с именем пользователя, соответствующим тому, что указано в текстовом поле.
Строка подключения выглядит неправильно - действительно ли эти вертикальные полосы являются частью вашей строки подключения?
Легко попасть в ловушку, глядя (скажем) на базу данных в вашей опубликованной папке, когда отладчик подключается к базе данных в папке отладки - проверьте ваш "DataDirectory" далее
DuskRope
Спасибо Chill60.
Я даже не понимал, что в отладочном файле есть отдельный файл базы данных (я только начал кодировать как часть уровня А и должен был научить себя всем вещам базы данных из-за закрытия школ/колледжей.) Мне просто нужно было открыть его и разрешить файл через windows - у меня есть какая-то странная вещь безопасности с доступом, где он не позволит файлу, если я сначала не запущу его от имени администратора. В настоящее время в базу данных вносятся обновления.
Спасибо снова.
CHill60
Если это вас утешит - я тоже попался на эту удочку. :-)