2013-09-06 3 views
0

Я просто новичок в создании базы данных. Его мой первый раз, используя базу данных в VB, но моя ошибка не позволит мне вставлять мои данные в мою таблицу. Я надеюсь, что кто-нибудь сможет исправить мои ошибки?Нужна помощь при вставке данных в мою базу данных Access

Заранее благодарен!

Dim conn As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = Z:\VIAJE_Exercises\MachineExercise7\databaseEnrolled.accdb;Persist Security Info=True") 

    Dim insertsql As String 

    Try 
     insertsql = "INSERT INTO databaseEnrolled" & _ 
     "(ID, year, studentID, firstName, middleInitial, lastName, age, gender, birthday, citizenship, religion, placeOfBirth, address, guardian, contact) " & _ 
     " VALUES(@ID, @year, @studentID, @firstName, @middleInitial, @lastName, @age, @gender, @birthday, @citizenship, @religion, @placeOfBirth, @address, @guardian, @contact)" 

     Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(insertsql, conn) 

     cmd.Parameters.AddWithValue("@year", year.Text) 
     cmd.Parameters.AddWithValue("@studentID", studentIdtxt.Text) 
     cmd.Parameters.AddWithValue("@firstName", firstNametxt.Text) 
     cmd.Parameters.AddWithValue("@middleInitial", middleTxt.Text) 
     cmd.Parameters.AddWithValue("@lastName", lastNametxt.Text) 
     cmd.Parameters.AddWithValue("@age", ageTxt.Text) 
     cmd.Parameters.AddWithValue("@gender", genderCom.Text) 
     cmd.Parameters.AddWithValue("@birthday", monthCom.Text + dayCom.Text + yearCom.Text) 
     cmd.Parameters.AddWithValue("@citizenship", citizenshipTxt.Text) 
     cmd.Parameters.AddWithValue("@religion", religionTxt.Text) 
     cmd.Parameters.AddWithValue("@placeOfBirth", placeOfBirthTxt.Text) 
     cmd.Parameters.AddWithValue("@address", addressTxt.Text) 
     cmd.Parameters.AddWithValue("@guardian", guardianTxt.Text) 
     cmd.Parameters.AddWithValue("@contact", contactTxt.Text) 

     conn.Open() 
     Dim rowsaffected As Integer = cmd.ExecuteNonQuery 
     MessageBox.Show(rowsaffected.ToString & "added") 
     conn.Close() 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
+0

Какая ошибка? Можете ли вы опубликовать его? – Arman

+0

Что такое строка подключения? – OneFineDay

+0

Я имею в виду, что если есть ошибка, сообщение должно вызывать сообщение об ошибке для исключения. Что указано в окне сообщений? – Arman

ответ

1

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

Я также вижу, что вы используете MS Access 2007 или более новую версию. Формат вашего Conn это неправильно, поскольку он предназначен только перед Access 2007.

Изменить ваш ConnectionString в:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\VIAJE_Exercises\MachineExercise7\databaseEnrolled.accdb;Persist Security Info=False; 

Саламат,

Update:

О, это слишком поздно для меня заметить, что вы используете зарезервированное слово MS Access. Например, «Год», один из них. Вы должны заключить его в [], такие как [год] в следующем коде:

insertsql = "INSERT INTO databaseEnrolled" & _ 
     "(ID, [year], studentID, firstName, middleInitial, lastName, age, gender, birthday, citizenship, religion, placeOfBirth, address, guardian, contact) " & _ 
     " VALUES(@ID, @year, @studentID, @firstName, @middleInitial, @lastName, @age, @gender, @birthday, @citizenship, @religion, @placeOfBirth, @address, @guardian, @contact)" 

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

Mabuhay ang Pinas.

+0

сейчас ive giot новая ошибка, синтаксическая ошибка в вставке в операторы –

+0

@MaryGraceIsananViaje Смотрите мои правки выше. – Arman

0

Я думаю, что проблема заключается в том, что ваш входной запрос пытается вставить значение для @year в поле ID вашей базы данных. Две вещи, которые вы можете сделать, чтобы попытаться исправить это.

  1. Если ваш идентификатор поля является полем первичного ключа автоинкрементным вы можете полностью удалить его из запроса вставки и он будет автоматически заполняться следующий доступный номер.

  2. Убедитесь, что ваши параметры в порядке. Поэтому, если идентификатор является первым в вашем входном запросе, вам нужно сделать id первым параметром ниже.

Смежные вопросы