Donald jeffers Ответов: 1

Данные не вставляются в базу данных


Проблема у меня есть в том, что мои данные не передаются в базу данных или datatable вообще, когда я нажимаю на кнопку Сохранить.

Предполагается, что пользователь (или я) для этого экземпляра должен ввести информацию в два текстовых поля, а затем нажать кнопку СОХРАНИТЬ, чтобы ввести информацию в базу данных. Однако он не сохраняется в базе данных и не отображается в gridview, даже если он говорит и выглядит так, как будто данные сохраняются.

В моем коде нет ошибок. Это простая форма входа, которую я создаю, поэтому в данный момент я не беспокоюсь о sql-инъекции. хотя я добавлю код для предотвращения sql-инъекции, как только закончу с проектом. Я буду продолжать отлаживать и искать решения. Если кто-то может ответить или решить этот вопрос, он будет очень признателен.

Мой код приведен ниже, и, пожалуйста, обратите внимание, что я не копировал и не вставлял этот код из интернета, я написал его сам. Еще раз спасибо за ваше время, если кто-нибудь может мне помочь.



SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\ComputerLab.mdf;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("sp_insert", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@LASTNAME", metroTextBox1.Text);
            cmd.Parameters.AddWithValue("@COMPUTER", metroTextBox2.Text);
            con.Open();
            int i = cmd.ExecuteNonQuery();

            con.Close();

            if (i != 0)
            {
                MessageBox.Show(i + "Data Saved");
            }


Что я уже пробовал:

Я отладил программу. Проверил строку подключения. ничто из того, о чем я думал до сих пор, казалось, не помогло ситуации.

PIEBALDconsult

Нам нужно было бы увидеть определение таблицы и sp_insert . Вы ведь знаете, что не следует начинать название процедуры с "sp_", не так ли?

ZurdoDev

Если ваш код выполняет каждую строку без ошибок, то проблема заключается в sql.

[no name]

Пожалуйста, проверьте свою процедуру один раз, передав ей значения в SSMS.

1 Ответов

Рейтинг:
0

CHill60

Первое, что нужно проверить, это то, что вы не перезаписываете базу данных каждый раз, когда запускаете свою программу - является ли datadirectory подпапкой вашего проекта? Вы запрашиваете версию выпуска или отладочную версию, если это так?

Попробуйте запустить следующий код в среде Sql Server Management Studio после подключения к этой базе данных, используя сведения о подключении из вашего кода.

insert into ComputerLab (LASTNAME,COMPUTER) values('LASTNAME','COMPUTER')
Если будут сообщены какие - либо ошибки, обратитесь к этим ошибкам-у вас может быть столбец в этой таблице, который не может быть нулевым, но который вы, например, не вставляете.

Попробуйте запустить хранимую процедуру непосредственно из SSMS
sp_insert 'LASTNAME', 'COMPUTERNAME'
и посмотрите, есть ли какие-либо ошибки.

Есть ли у вас несколько схем в базе данных? Попробуй
SELECT * FROM dbo.ComputerLab