2013-09-09 1 views
3

Привет У меня есть локальная база данных с именем Database1.sdf. I'm доступ к нему со следующим кодом, чтобы вставить данные в таблицу:Вставить в локальный сервер Sql CE не вставить

public string DoLocalDbCmd(string Command) 
     { 
      int NumeroAffetto; 
      string ConnString = @"Data Source=|DataDirectory|\Database1.sdf"; 
      SqlCeConnection Conn = new SqlCeConnection(ConnString); 
      SqlCeCommand Comando = new SqlCeCommand(Command, Conn); 
      Comando.CommandType = System.Data.CommandType.Text; 
      try 
      { 
       Comando.Connection.Open(); 
       NumeroAffetto = Comando.ExecuteNonQuery(); 
       return NumeroAffetto.ToString(); 
      } 
      catch (Exception ex) 
      { 
       return ex.Message; 
      } 
      finally 
      { 
       Comando.Connection.Close(); 
      } 
     } 

private void button1_Click(object sender, EventArgs e) 
     { 
      DoLocalDbCmd cmd = new DoLocalDbCmd(); 

      string cmdex = cmd.RunSqlCmd("insert into TBL_PROVA (BELLO) VALUES ('VERO')"); 

      MessageBox.Show(cmdex); 
     } 

Выполнение кода произойдет без ошибок, я получить количество пораженной строки = 1.

Но после того, как если бы я запрос в базу данных не вставлен ни одной строки.

Кто-нибудь может предложить мне, что может быть неправильным?

Thankyou заранее

Piercarlo

+0

Как вы можете проверить базу данных для вставки? DataDirectory - это строки подстановки, которые, когда ваша программа работает в режиме DEBUG (внутри VS IDE), указывают на вашу папку BIN \ DEBUG или APP_DATA (в приложениях ASP.NET) – Steve

+0

Пожалуйста, измените название своего вопроса. Это сбивает с толку. [LocalDB] (http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx) - это имя установленного Sql Server Express 2012 а не как услугу на одном ПК. Вместо этого вы имеете в виду Sql Compact Edition, другой вид db – Steve

ответ

3

Это обычный сценарий, когда эти условия полностью или частично присутствуют в вашем проекте.

  • У вас есть строка соединения с DataDirectory заместительной строки.
  • У вас есть подключение к Server Explorer, указывающее на файл SDF , расположенный в каталоге проекта.
  • У вас есть свойство Copy To Output Directory установлено в Copy Always на ваш SDF-файл, указанный в ваших проектах.

При запуске программы внутри IDE в VS СПФ файл присутствует в папке проекта копируется в выходной каталог (BIN \ DEBUG) после настройки Copy To Output Directory, и это может привести к перезаписи файла в конечном счете уже присутствующий в BIN \ DEBUG.
Вы запускаете свой код и правильно вставляете свои данные в файл в папке BIN \ DEBUG.
Вы останавливаете свою программу и проверяете, присутствует ли запись с помощью Server Explorer, и вы не видите никакой новой записи, потому что вы смотрите на файл в папке проекта.
Вы начинаете новый сеанс отладки, и файл в BIN \ DEBUG перезаписывается снова с пустым.

Итак ... измените свойство Copy to the Output Directory на Copy Never, чтобы остановить это копирование, измените соединение в проводнике сервера, чтобы указать на вашу базу данных в папке BIN \ DEBUG (или добавить еще одну, сохранив старую для изменений схемы и новый, чтобы проверить ваши операции с DML)

+0

Perferct i resolved – Piercarlo