Member 14621280 Ответов: 3

Я хочу обновить свой VB.NET проект в базу данных ms access


У меня есть Textbox1, TextBox2, TextBox3 и RichTextBox1

Имя базы данных : Database
Название таблицы : песни
Колонка 1 (код)
Колонка 2 (SONG_ETITLE)
Колонка 3 (SONG_TTITLE)
Столбец 4 (SONG_SONGS1) в базе данных Ms access


и я хочу перечитывать кое-какую информацию и обновлять ее... Но база данных ms access не обновила то, что я редактировал или повторно вводил детали...

Что я уже пробовал:

If TextBox1.Text <> "" Then
            SONGSBindingSource.EndEdit()
            SONGSTableAdapter.Update(DatabaseDataSet.SONGS)
            MsgBox("Records Updated", MsgBoxStyle.Information, "Updated")
            TextBox1.ReadOnly = True
            TextBox2.ReadOnly = True
            TextBox3.ReadOnly = True
            RichTextBox1.ReadOnly = True
        Else
            MsgBox("Name cannot be empty", MsgBoxStyle.Exclamation, "Error")
        End If

    End Sub

3 Ответов

Рейтинг:
1

Patrice T

command = "Update SONGS set [SONG_ETITLE]='" & TextBox2.Text & "',[SONG_TTITLE]='" & TextBox2.Text & "',[SONG_SONGS1]='" & RichTextBox1.Text & "' where [CODE]=" & TextBox1.Text & ""

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
0

RickZeeland

Вот вам пример: Вставка, обновление, удаление и поиск значений в MS Access 2003 с помощью VB.NET 2005 год[^]

Однако приведенный пример уязвим для SQL-инъекции: никогда не объединяйте SQL-строки подобным образом !
Смотрите пример здесь как использовать более безопасный метод: asp.net - предотвращение SQL-инъекций с помощью Microsoft Access и VB.NET - переполнение стека[^]

Я бы также рекомендовал поместить вашу базу данных в другой каталог, чем каталог отладки, возможно, он будет перезаписан при сборке приложения.


Member 14621280

про = поставщик = "поставщика=Майкрософт.Туз.Oledb для.12.0;Источник данных=Ф:\хвалить\хвалить\бин\отладки\базе.# то # "
connString = pro
myConnection.ConnectionString = connString
myConnection.Открыть()
команда = "песни обновление комплект [SONG_ETITLE]='" &амп; поле textbox2.Текст &ампер; "',[SONG_TTITLE]='" &амп; поле textbox2.Текст &ампер; "',[SONG_SONGS1]='" &амп; richtextbox1 отображение.Текст &ампер; "', где [код]=" &амп; текстовое поле textbox1.Текст и усилитель; ""
Дим УМК как объект oledbcommand = новый объект oledbcommand(команда, myConnection)
MsgBox("Обновление Успешно")
Попробуй
УМК.Метод executenonquery()
УМК.Располагать()
myConnection.Закрывать()
Текстовое поле textbox1.Включен = Ложь
Поле textbox2.Включен = Ложь
Textbox3 и.Включен = Ложь
Richtextbox1 отображение.Включен = Ложь

Поймать ex как исключение
С помощью MsgBox(исх.Сообщение)

Конец Попытки
Конец Подводной Лодки


Я переиздавал это, но без толку ... Пожалуйста поправьте меня

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Member 14621280

Система.ArgumentException был необработан
Значение HRESULT=-2147024809
Message=формат строки инициализации не соответствует спецификации, начинающейся с индекса 0.
Источник=System.Data
Трассировка стека:
в System.Data.Общий.DbConnectionOptions.GetKeyValuePair(connectionString строка, типа int32, текущий положение знака, буфер то StringBuilder, логическое useOdbcRules, стринги и усилитель; имя параметра, строка&амп; значения)
в System.Data.Общий.DbConnectionOptions.ParseInternal(хеш-таблицы parsetable, connectionString строка, булево buildChain, хеш-таблицы синонимов, логическое firstKey)
в System.Data.Общий.DbConnectionOptions..ctor(строка connectionString, синонимы хэш-таблицы, логические useOdbcRules)
в System.Data.OleDb.OleDbConnectionString..ctor(строка connectionString, логическая проверка)
в System.Data.OleDb.OleDbConnectionFactory.CreateConnectionOptions(строка connectionString, DbConnectionOptions предыдущая)
в System.Data.База поставщиков.DbConnectionFactory.GetConnectionPoolGroup(ключ DbConnectionPoolKey, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
в System.Data.Oledb для.Метод oledbconnection.ConnectionString_Set(ключ DbConnectionPoolKey)
в System.Data.OleDb.OleDbConnection.set_ConnectionString(строковое значение)
на похвалу.SongsList.btnUpdate_Click(отправитель объекта, EventArgs e) в F:\Praise\Praise\SongsList.vb:line 218
в системе.Окна.Формы.Контроль.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnMouseUp(MouseEventArgs mevent)
в системе.Окна.Формы.Контроль.WmMouseUp(Message& m, кнопка MouseButtons, Int32 клика)
в системе.Окна.Формы.Контроль.WndProc(сообщение& m)
в системе.Окна.Формы.ButtonBase.WndProc(сообщение& m)
в системе.Окна.Формы.Кнопка.WndProc(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.OnMessage(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.WndProc(сообщение& m)
в системе.Окна.Формы.Родное окно.DebuggableCallback(hwnd элемента указателя IntPtr, int32 и глутамат натрия, указателя IntPtr параметр wparam, указателя IntPtr lparam должен)
в системе.Окна.Формы.Небезопасные методы.DispatchMessageW(MSG& msg)
в системе.Окна.Формы.Приложение.ComponentManager.Система.Окна.Формы.Небезопасные методы.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в системе.Окна.Формы.Приложение.ThreadContext.RunMessageLoopInner(Int32 причина, контекст ApplicationContext)
в системе.Окна.Формы.Приложение.ThreadContext.RunMessageLoop(Int32 причина, контекст ApplicationContext)
в системе.Окна.Формы.Приложение.RunDialog(форма формы)
в системе.Окна.Forms.Form.ShowDialog(владелец IWin32Window)
в системе.Окна.Форм.Форма.Метод showdialog()
at Praise.Main.SongDisplayToolStripMenuItem_Click(Object sender, EventArgs e) in F:\Praise\Praise\Main.vb:line 20.
в системе.Окна.Формы.ToolStripItem.Метод raiseevent(ключевой объект, EventArgs в электронной)
в системе.Окна.Формы.Toolstripmenuitem в.OnClick(EventArgs e)
в системе.Окна.Формы.ToolStripItem.HandleClick(EventArgs e)
в системе.Окна.Формы.ToolStripItem.HandleMouseUp(MouseEventArgs e)
в системе.Окна.Формы.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
в системе.Окна.Формы.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
в системе.Окна.Формы.Инструментальная лента.OnMouseUp(MouseEventArgs mea)
в системе.Окна.Формы.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
в системе.Окна.Формы.Контроль.WmMouseUp(Message& m, кнопка MouseButtons, Int32 клика)
в системе.Окна.Формы.Контроль.WndProc(сообщение& m)
в системе.Окна.Формы.ScrollableControl.WndProc(сообщение& m)
в системе.Окна.Формы.Инструментальная лента.WndProc(сообщение& m)
в системе.Окна.Формы.ToolStripDropDown.WndProc(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.OnMessage(

RickZeeland

Ваша строка подключения кажется неправильной, вы уверены, что расположение: F:\Praise\Praise\bin\Debug\Database.accdb
правильно ли это ?

Member 14621280

Да

Рейтинг:
0

Robert Bettinelli

-- На маленькой боковой ноте ...

То

If TextBox1.Text <> "" Then


Может быть.. Джут, чтобы быть немного лучше..
If String.IsNullOrEmpty(Textbox1.Text) Then 
   ...
Endif


Richard Deeming

Вам понадобится ... Not в противном случае, вы просто перевернули значение условия. :)