@hurgadan

Почему после выполнения INSERT отсутствуют данные в таблице?

Всем привет.
Есть форма, в ней пара полей для ввода и кнопка, по нажатию на которую нужно сохранить данные из полей для ввода. Сохранение реализуется методом addNewWord класса представленного ниже.
1) При нажатии на кнопку, код отрабатывает без ошибок, но итоге в таблице данные не появляются. Почему? При этом, если нажать на кнопку больше 1 раза, появляется ошибка: "...Cannot insert duplicate key in object ...". Т.е. получается, что после первого нажатия кнопки вставка была и в таблицу данные были добавлены. Но когда в Visual Studio открываю таблицу, там пусто.
2) Почему пояляется ошибка "Cannot insert duplicate key in object ", если поле ID (PRIMARY KEY) в таблице объвлено как IDENTITY ?
class DbWriter
    {
        private SqlConnection connection;
        private SqlCommand query;

        public DbWriter()
        {
            string sqlCon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;Connect Timeout=30";
            this.connection = new SqlConnection(sqlCon);
            this.connection.Open();

            this.query = new SqlCommand();
            query.Connection = this.connection;
            query.CommandType = System.Data.CommandType.Text;
        }
        
        public void addNewWord(string deutch_wort, string rissich_wort)
        {
            SqlTransaction safetransaction = connection.BeginTransaction();
            this.query.CommandText = "insert into wort (deutch, russich) values ('" + deutch_wort + "', '" + rissich_wort + "') SELECT SCOPE_IDENTITY()";
            this.query.Transaction = safetransaction;
            this.query.ExecuteNonQuery();
            safetransaction.Commit();
        }
    }
  • Вопрос задан
  • 2402 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Oxoron
Шарпер
Видимо, у вас поля deutch, russich тоже должны быть уникальными. Плюс, что значит, "открываю таблицу через MS". Там по-разному можно извратиться, в т.ч. увидеть лишь структуру.

Вообще, если БД небольшая и несложная, рекомендую поставить EF или NHibernate. Простейшая установка и изучение займет пару-тройку часов, потом жить станет сильно проще.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы