Jamim Ответов: 0

SQL отлично работает, когда я отлаживаю проект, но как только я делаю установку и устанавливаю его, он показывает ошибку?


Я новичок и с трудом нахожусь в поиске решения.Я использую vb.net и ms access в качестве базы данных. Вот в чем моя проблема

SQL отлично работает, когда я отлаживаю проект, но как только я делаю установку и устанавливаю его, он показывает ошибку?
operation must use an updateable


Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
DateTimePicker1.Refresh()
DateTimePicker1.Value = DateTime.Now
DATEANDTIMEtxt.Text = CType(DateTimePicker1.Value, String)

If TextBox4.Text = "" Or TextBox5.Text = "" Then
MsgBox("plz fill the info")
Else

Try
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB_HR.accdb;Jet OLEDB:DATABASE PASSWORD=dbhr123;")

Dim Str As String = "Insert Into LOGIN([YOUR_NAME],[PASSWORD],[DATEANDTIME]) Values (?,?,?)"
Dim cmd As New OleDbCommand(Str, conn)
cmd.Parameters.Add(New OleDbParameter("YOUR_NAME", CType(TextBox4.Text, String)))
cmd.Parameters.Add(New OleDbParameter("PASSWORD", CType(TextBox5.Text, String)))
cmd.Parameters.Add(New OleDbParameter("DATEANDTIME", CType(DATEANDTIMEtxt.Text, String)))
conn.Open()
cmd.ExecuteNonQuery() '<------Error say's it was here
MsgBox("Create success")
conn.Close()
Panel1.Visible = False
TextBox4.Clear()
TextBox5.Clear()
TextBox4.Select()

TextBox1.Enabled = True
TextBox2.Enabled = True
Button1.Enabled = True
Button2.Enabled = True
TextBox1.Text = ""
TextBox1.Select()

Catch ex As Exception
MsgBox(ex.ToString())
End Try
End If
End Sub


это и есть ошибка

Система.Данные.Oledb для.OledbExeption (0x80004005): операция должна использовать обновляемый запрос.
в WindowsApp1.Form1.Button4_Click(отправитель объекта, EventArgs e) в C:\Users\Alex\Desktop\HR_appP2 w password\WindowsApp1\WindowsApp1\Form1.vb:строка 112

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

Я уже попробовал это сделать
I change my application in Administrator Privilege
Change Level From

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

To

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

I have checked the permissions on the folder that contains the Access file.


Так ли это, как я строю его?

Dave Kreskowiak

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

Кроме того, если вы поместите свою базу данных Access в ту же папку, что и исполняемый файл, в разделе Program Files, эта папка будет доступна только для чтения всем обычным пользователям. Вы должны переместить свою базу данных Access в более подходящую папку, например в разделе C:\ProgramData\SomeFolder.

Jamim

Спасибо, что предложили опубликовать код. Я уже отправил код

Jochen Arndt

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

Вместо этого используйте каталог, в котором пользователь, выполняющий приложение, имеет доступ на запись, как это было предложено Дейвом.

Если файл базы данных уже существует (например, при копировании шаблона или пустой базы данных при установке), убедитесь также, что сам файл имеет аналогичные правила доступа (может быть записан пользователем(АМИ)).

RedDk

0x80004005 -> Если вы посмотрите здесь:
https://www.google.com/search-что?м=система.Данных.OleDb.OleDbException+(0x80004005)+site:social.msdn.microsoft.com&num=100&sa=X&ved=0ahUKEwjn5vXAzpzcAhWBrZQKHbuDDX4qrqiimygemaa&biw=975&bih=886

.. вы увидите, что эта ошибка меньше описывает фактический сбой в коде, который вы проталкиваете через OleDb, и больше общего сбоя (со стороны OleDb dev as MS, верно?) ... и в лучшем случае должен быть помечен как губа какой-то каскадной ерунды. Я не собираюсь сам прокручивать типы ошибок. Я позволю тебе это сделать. Удачи.

Jamim

Я уже решил эту проблему, просто забыл поискать App.Config в любом случае спасибо ^_^. Как Новичок,мы действительно ценим экспертную помощь, а также статью, ссылки и другие материалы, которые они дали

0 Ответов