2014-01-17 4 views
0

Случай 1: я не могу вставить данные в свою базу данныхНе удается вставить данные в базу данных MS-Access В.Б

Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ProjectVB.accdb") 

Случай 2: я могу вставить данные в свою базу данных

Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Admin\Documents\ProjectVB.accdb") 

база данных была сохранена в моем проекте уже

conn.Open() 

      cmd.Connection = conn 
      cmd.Parameters.AddWithValue("@ac_ID", txtID.Text) 
      cmd.Parameters.AddWithValue("@ac_pass", txtPassword.Text) 
      cmd.Parameters.AddWithValue("@nation_ID", txtNoID.Text) 
      cmd.Parameters.AddWithValue("@fName", txtFirstName.Text) 
      cmd.Parameters.AddWithValue("@lName", txtLastName.Text) 
      cmd.Parameters.AddWithValue("@tel", txtTel.Text) 
      cmd.Parameters.AddWithValue("@province", cbNation.SelectedItem) 
      cmd.Parameters.AddWithValue("@regOn", dtRegOn.Text) 
      cmd.Parameters.AddWithValue("@status", txtStatus.Text) 
      cmd.Parameters.AddWithValue("@gender", cbGender.SelectedItem) 
      cmd.Parameters.AddWithValue("@location", txtLocation.Text) 
      cmd.Parameters.AddWithValue("@img", imgBuffer) 
      cmd.Parameters.AddWithValue("@rank", cbRank.SelectedItem) 
      cmd.CommandText = "INSERT INTO db_KJ_Profile VALUES(@ac_ID,@ac_pass,@nation_ID,@fName,@lName,@tel,@province,@regOn,@status,@gender,@location,@img,@rank)" 
      cmd.ExecuteNonQuery() 
+0

Вы можете прочитать из базы данных в первом случае? – Rob

+0

Да. Я могу читать, но не могу вставить. – user3197661

+1

Получили ли вы сообщения об ошибках или просто не нашли данные, вставленные при проверке вашей базы данных? – Steve

ответ

2

В случае строки замены DataDirectory вы должны проверить содержимое базы данных в папка PROJECTFOLDER\BIN\DEBUG (или версия x86 того же пути).

Это связано с тем, что в приложении WinForms, при запуске в сеансе отладки VS, DataDirectory указывает на папку, в которой выполняется ваше приложение (подкаталог BIN \ DEBUG или BIN \ x86 \ DEBUG папка проекта).

Это легко заметить, и это всегда является источником смятения.
И хуже, если у вас есть файл ACCDB, указанный в ваших проектах. В этом случае элемент базы данных имеет свойство, называемое Copy To The Output Directory. Вы должны проверить, что установлено значение Copy If Newer or Copy Never, а не Copy Always, потому что в этом случае при каждом перезапуске вашего сеанса отладки новая копия базы данных копируется (конечно, без вставленных данных) из вашей папки проекта в BIN \ DEBUG папка

+0

Большое спасибо. для копирования, если новый и моя база данных были обновлены. – user3197661

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