2011-11-14 23 views
0

我無法獲取正在發生的事情。我正在使用一個SQL CE(.sdf文件)到本地數據庫(winform應用程序),當我調試時,一切都運行得很好,我最終得到了我的數據插入的消息。但稍後,當我檢查我的數據庫時,它是空的。SQL命令INSERT不會將數據插入表中,但調試顯示它沒有(C#)

我該怎麼辦?

這是我的代碼:

SqlCeConnection conn = new SqlCeConnection(@"Data Source=|DataDirectory|\Database\Livraria.sdf;"); 
     SqlCeCommand cmd = new SqlCeCommand(); 
     cmd.Connection = conn; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = @"INSERT INTO Livros (Codigo, ISBN, Titulo, Editora, Localizacao, Valor, QTD, Autor, AutorEspiritual, Data_) 
          VALUES (@Codigo, @ISBN, @Titulo, @Editora, @Localizacao, @Valor, @QTD, @Autor, @AutorEspiritual, @Data_)"; 

     cmd.Parameters.AddWithValue("@Codigo", codigo); 
     cmd.Parameters.AddWithValue("@ISBN", isbn); 
     cmd.Parameters.AddWithValue("@Titulo", titulo); 
     cmd.Parameters.AddWithValue("@Editora", editora); 
     cmd.Parameters.AddWithValue("@Localizacao", localizacao); 
     cmd.Parameters.AddWithValue("@Valor", valor); 
     cmd.Parameters.AddWithValue("@QTD", entradas); 
     cmd.Parameters.AddWithValue("@Autor", autor); 
     cmd.Parameters.AddWithValue("@AutorEspiritual", autorEspiritual); 
     cmd.Parameters.AddWithValue("@Data_", data_); 

     try 
     { 
      conn.Open(); 
      if (cmd.ExecuteNonQuery() > 0) 
      { 
       MessageBox.Show("Livro adicionado com sucesso!"); 
      } 
      else 
      { 
       MessageBox.Show("O livro não foi adicionado."); 
      } 

      // Reset campos 
      Codigo.Text = ""; 
      Titulo.Text = ""; 
      Editora.SelectedIndex = 0; 
      Valor.SelectedIndex = 0; 
      Localizacao.SelectedIndex = 0; 
      Entrada.Text = ""; 
      Isbn.Text = ""; 
      Autor.SelectedIndex = 0; 
      AutorEspiritual.SelectedIndex = 0; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
     finally 
     { 
      conn.Close(); 
     } 

回答

3

你有兩個數據庫。您正在插入一個,並在另一箇中查找結果。

或者,您正在開始一個事務,插入但未提交。

+0

謝謝@Steve倫斯,我剛剛看到這個鏈接http://stackoverflow.com/questions/3899310/why-cant -i-insert-a-record-into-my-sql-compact-3-5-database顯示它,但現在我有另一個問題:當我在非調試模式下運行應用程序時,我的數據庫將是根, 對? –

+0

如果您的數據庫位於調試目錄中,那麼當您在發佈模式下運行時,可能找不到它。你也可以調用:AppDomain.CurrentDomain.SetData(「DataDirectory」,@「C:\ MyData \」); –

+0

我有一個數據庫也在我的根文件夾(Database/database.sdf)我想知道德調試文件夾數據庫只用於調試測試,發佈後我的系統它將運行在我的主數據庫...在引導它shoukd會像那o_0 –

0

您需要做的第一件事是首先創建一個簡單的select語句,從sqlce數據庫獲取記錄。

if(has record//connected) 
{ 
    //Proceed to your insert statement remove if else and use 

    conn.Open(); 
    cmd.ExecuteNonQuery() 

    //then check your DB again 

} 
else 
{ 
//Problem on you connection string 
} 

你SQLCE數據庫位於您的bin文件夾

問候

相關問題