2012-05-08 2 views
3

В проекте у меня есть локальная база данных (я использую datagrid для просмотра данных), но проблема в том, что при вставке в базу данных с использованием запроса на вставку вставка не выполняется, т. е. при повторном запуске приложения база данных не изменяется и изменения не отражаются в представлении базы данных (данные таблицы просмотра в Visual Studio).Невозможно вставить данные в локальную базу данных в WPF

Запрос вставки:

string dbCon = new  System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\MyDatabase.sdf"; 
     SqlCeConnection dbconnection = new SqlCeConnection("datasource=" + dbCon); 

     dbconnection.Open(); 

     String Insert = "insert into MainTable(LineID,Date,Connection_Type) Values('5','5/8/2012','commercial')"; 
SqlCeCommand cmd = new SqlCeCommand(Insert, dbconnection); 

     //// Execute the command 
     cmd.ExecuteNonQuery(); 

     dbconnection.Close(); 

Теперь при выполнении этого кода, то DataGrid обновляется, но эти изменения не являются постоянными. Что я делаю неправильно? Я использую Visual Studio 2010 Ultimate и Windows 7

ответ

0

В какой папке работает ваше приложение? Если в дереве программных файлов у вас, вероятно, нет прав на запись в файл sdf (особенно в Windows 7, если вы не отключили UAC или поднимаете приложение до его выполнения).

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

+0

Это на рабочем столе, как убедиться, что у меня есть необходимые разрешения? –

0
  1. Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\MyDatabase.sdf" - путь к вашей папке приложения. В зависимости от параметров установки ваш файл не может быть установлен там. Используйте строку подключения "DataSource=|DataDirectory|\\MyDatabase.sdf;...", как описано here.

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

  3. Если у вас есть проект Visual Studio с базой данных, частью вашего проекта, у него, вероятно, будет установлено свойство «Копировать в выходной каталог» в «Копировать». Это означает, что каждый раз, когда вы запускаете в отладчике, вы получаете совершенно новую базу данных, скопированную из вашего исходного проекта, перезаписывая все, что было раньше. Любые изменения будут в этой временной папке вывода, а не в исходных исходных данных. При повторном отладке приложения временная копия удаляется. Дальнейшее объяснение в this answer.

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