#vb.net
#vb.net
Вопрос:
Привет, я пытаюсь использовать этот код для сохранения в моей базе данных Access, и хотя ошибок нет, и в нем говорится, что данные сохранены, моя база данных access не получает новые данные. Что с этим не так?
Private Sub savenew()
Dim conn As New OleDbConnection
conn = New OleDbConnection
dbprovider = "Provider=Microsoft.ACE.OLEDB.12.0;"
dbsource = "Data Source = FULL YUGIOH ACCESS DATABASE.accdb;"
conn.ConnectionString = dbprovider amp; dbsource
Dim reader As OleDbDataReader
Dim command As OleDbCommand
Try
conn.Open()
Dim query As String
query = "insert into item(name) values ('" amp; TextBox4.Text amp; "')"
command = New OleDbCommand(query, conn)
reader = command.ExecuteReader
MsgBox("data saved")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
(таблица в моей базе данных называется item, а столбец называется name.)
Комментарии:
1.OleDbCommand.ExecuteNonQuery — OleDbCommand.Параметры.
2. Снова привет, Джими! Куда мне поместить каждый из них?
3.
Dim query As String = "insert into [item] ([name]) values (@NameValue)" command.Parameters.Add("@NameValue", OleDbType.VarChar).Value = TextBox4.Text command.ExecuteNonQuery()
. И соединение, и команда должны быть удалены или объявлены вUsing
блоке. В качестве примечания, обаitem
иname
действительно являются плохим выбором в качестве имен таблиц / полей. Вы должны переименовать их.4. Джими, это сработало, спасибо!!! Я обнаружил, что каким-то образом мой источник данных должен был быть жестко запрограммирован. Поскольку вы здесь, не могли бы вы знать путь к файлу, который будет работать для каждого компьютера, поскольку мой работает только с моим (моя база данных хранится в файле проекта с exe, который запускает код.)
5.
Dim databasePath = Path.Combine(Application.StatupPath, "FULL YUGIOH ACCESS DATABASE.accdb"). Dim dbprovider as String = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={databasePath};Persist Security Info=false;"
. Соединения также могут храниться в файле конфигурации, но с файлом Access DB этого достаточно.