Ошибка исключения первого шанса
Я собираюсь добавить некоторые данные в ms access 2010 с помощью vb.net и я получаю следующее сообщение об ошибке во время выполнения.
"Первый шанс исключение типа 'System.Данных.Oledb. OleDbException ' произошло в System.Data.dll"
Что я уже пробовал:
Мой код таков;
Imports System.Data.OleDb Public Class Form1 Private Sub cmdcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcancel.Click Close() End Sub Private Sub cmdadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdadd.Click Try Dim sqlconn As New OleDb.OleDbConnection Dim sqlquery As New OleDb.OleDbCommand Dim connString As String connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Tubewell\Tubewell\Tubewell.accdb" sqlconn.ConnectionString = connString sqlquery.Connection = sqlconn sqlconn.Open() sqlquery.CommandText = "INSERT INTO Employee_Details(EmpNo,Employee Name,Status) VALUES ('" & txtempno.Text & "','" & txtempname.Text & "','" & ComboBox1.Text & "')" sqlquery.ExecuteNonQuery() sqlconn.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Class
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Исправьте это, и это, вероятно, исправит OleDbException
также.
Michael_Davies
Ваш проект 64-битный или 32-битный?
Member 13363527
64бит
Michael_Davies
Установите его на 32 бита и посмотрите, исправляет ли он, первые случайные ошибки возникают при загрузке ресурсов (в данном случае OLEDB), Microsoft.ACE.OLEDB.12.0-32 бита. Много статей на эту тему вот одна из них использует то же самое для Excel; https://blogs.msdn.microsoft.com/farukcelik/2010/06/04/accessing-excel-files-on-a-x64-machine/