2015-10-03 3 views
-3

Я смотрел Yt, Google и т. Д. Я пробовал 5 решений и ничего. Я помещаю txt в текстовое поле, оно отображается в окне списка, но не подходит для доступа.Доступ не будет сохранять ввод

Вкратце.

private void addAF_Click(object sender, EventArgs e) 
    { 


     if (aFInput.Text != "") { 

      string q = "insert into AFs (AFNumber,SendDate,Notes) values ('"+aFInput.Text.ToString()+"','"+DateTime.Now+"', '"+notes.Text.ToString()+"')"; 
      dosomemagic(q); 
      aFInput.Text = null; 

     } 

    } 
    private void dosomemagic(String q) 
    { 

     try 
     { 
      cnn.Open(); 
      cmd.CommandText = q; 
      cmd.ExecuteNonQuery(); 
      cnn.Close(); 
      loaddata(); 
     } 
     catch (Exception e) 
     { 
      cnn.Close(); 
      MessageBox.Show(e.Message.ToString()); 
     } 
    } 

    private void ANLPA_Load(object sender, EventArgs e) 
    { 

     cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AFdbB03.mdb;"; 
     cmd.Connection = cnn; 
     loaddata(); 
    } 

    private void loaddata() 
    { 
     AFList.Items.Clear(); 
     try 
     { 
      string q = "select * from AFs"; 
      cmd.CommandText = q; 
      cnn.Open(); 
      dr = cmd.ExecuteReader(); 
      if (dr.HasRows) 
      { 
       while (dr.Read()) 
       { 
        AFList.Items.Add(dr[1].ToString()); 
        keyList.Items.Add(dr[0].ToString()); 

       } 
      } 
      dr.Close(); 
      cnn.Close(); 
     } 
     catch (Exception ex) 
     { 
      cnn.Close(); 
      MessageBox.Show(ex.Message.ToString()); 
     } 
    } 
+1

Вы отлаживали этот код? – khlr

+0

У вас есть файл базы данных, указанный между вашими файлами проекта? Если да, то каково свойство «Копировать в выходной каталог»? – Steve

+0

Код работает без ошибок или предупреждений. Файл отображается в моих файлах. Я добавил базу данных с добавлением базы данных. Программа показывает в списке все данные из db. – Venator

ответ

0

Когда работает ваше приложение, он запускается из папки BIN\DEBUG и добавить свою запись в базе данных копируются в этой папке с помощью Visual Studio при запуске сеанса отладки. Если файл имеет набор свойство Copy to Output Directory к Copy Always тогда, каждый раз, когда вы начинаете сеанс отладки, Visual копии студии файлов MDB из папки проекта в свой выходной каталог (BIN \ DEBUG или вариант x86)

Таким образом, ваш код правильно пишет, но при следующем запуске ваши данные исчезает, потому что файл был заменен Visual Studio

Установите свойство Copy To Output directory в Copy Never или Copy if Newer

в качестве примечания, пожалуйста, немного вашего времени узнайте, как использовать parameterized query. Ваш код на самом деле работает, но что произойдет, если текстовые поля заметок содержат одну цитату в свойстве Text? Код будет сбой с синтаксической ошибкой. Но это минор ваших проблем. Существует хорошо известная технология взлома, называемая Sql Injection, которая может уничтожить данные в вашей базе данных.

+0

Свойство Copy, если Newer частично разрешило мою проблему, потому что теперь, когда после переустановки решение все еще есть, но когда я открываю файл доступа, его нет там, и после rebulid он также исчезает из списка. – Venator

+0

Свойство Copy never хуже, потому что оно показывает мне сразу после восстановления «невозможно найти файл» – Venator

+0

У вас есть файл MDB в папке \ BIN \ DEBUG (или x86)? После копирования в первый раз, когда Visual Studio не удаляется, попробуйте установить копию, если она более новая – Steve

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