Команда SQL INSERT не вставляет данные в таблицу, но отладка показывает, что она это сделала (C #) - PullRequest
0 голосов
/ 14 ноября 2011

Я не могу понять, что происходит с моим приложением.Я использую SQL CE (файл .sdf) для локальной базы данных (приложение winform), и когда я отлаживаю, все работает довольно хорошо, в конце я получаю сообщение о том, что мои данные были вставлены правильно.Но позже, когда я проверяю свою базу данных, она пуста.

Что мне делать?

Это мой код:

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();
        }

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

У вас есть две базы данных.Вы вставляете в один и ищете результаты в другом.

Или вы начинаете транзакцию, вставляете, но не фиксируете.

0 голосов
/ 14 ноября 2011

Первое, что вам нужно сделать, это сначала создать простой оператор выбора, который получает запись из вашей базы данных 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

Привет

...