2011-11-14 4 views
0

私のアプリに何が起こっているのですか?私はローカルデータベース(winformアプリケーション)にSQL CE(.sdfファイル)を使用しています。デバッグ時にはすべてがうまく動いています。データの最後にメッセージが挿入されています。しかし、後で、私は自分のdatabseをチェックすると、その空です。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

次の2つのデータベースを持っています。あなたは1つに挿入して、別のもので結果を探しています。

または、トランザクションを開始していますが、挿入してからコミットしません。

+0

あなたのbinフォルダに配置されて

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 } 

私はちょうどこのリンクhttp://stackoverflow.com/questions/3899310/why-cantを見て、あなたに@Steve Wellensをありがとう - i-insert-a-record-into-my-sql-compact-3-5データベースを表示していますが、別の質問があります。アプリケーションをデバッグモードで実行すると、データベースがルート、 右? –

+0

データベースがデバッグディレクトリにある場合、リリースモードで実行すると、データベースが見つからないことがあります。 AppDomain.CurrentDomain.SetData( "DataDirectory"、@ "C:\ MyData \");を呼び出すこともできます。 –

+0

私は自分のルートフォルダ(Database/database.sdf)にもデータベースを持っています。私はデバッグフォルダデータベースはデバッグテストのためだけで、私のシステムは私のメインデータベースで実行します。そのo_0 –

0

最初に行う必要があるのは、sqlceデータベースからレコードを取得する単純なselect文を作成することです。あなたのSQLCEデータベースは

よろしく

関連する問題