Member 13356973 Ответов: 1

Как вставить данные в таблицу


У меня есть этот код на c#, чтобы программно вставлять данные в таблицу:

 using (SqlConnection conn = new SqlConnection(@"Data source = xxxx; Database=xxxxx; User Id=xxxx; Password=xxxx"))
{
 conn.Open();
 string sqlQuery = @"INSERT INTO UXFaturas(TransDocument, TransSerial, TransDocNumber, 
 Data, Estado) VALUES (@transdocument, @transserial, @transdocnumber, @data, @estado)";
 MessageBox.Show("step1");
 SqlCommand SQLcm = new SqlCommand();
 SQLcm.Connection = conn;
 SQLcm.CommandText = sqlQuery;
 SQLcm.CommandType = CommandType.Text;
 MessageBox.Show("step2");
 SQLcm.Parameters.AddWithValue("@transdocument", transdocument);
 SQLcm.Parameters.AddWithValue("@transsarial", transserial);
 SQLcm.Parameters.AddWithValue("@transdocnumber", transdocnumber);
 SQLcm.Parameters.AddWithValue("@data", data);
 SQLcm.Parameters.AddWithValue("@estado", estado);
 MessageBox.Show("step3");
 SQLcm.ExecuteNonQuery();
 MessageBox.Show("inseriu");
 conn.Close();
}


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

Я добавил три messagebox. show (""); чтобы знать, где программа перестает работать, но она проходит все три шага и просто пропускает SQLcm.ExecuteNonQuery ();.
Я могу предоставить код для создания таблицы и переменных, если вам это нужно.

Nowfer Rifkan

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

пробовать
{
using (SqlConnection conn = new SqlConnection ("Put ur connection string here"))
{
Коннектикут.Открыть();
Команда sqlcommand cmd и = новая команда sqlcommand("вставить в Имя_таблицы(столбец идентификаторов) значения('" + ценности + "')", соед);
УМК.Метод executenonquery();
Коннектикут.Закрывать();
messagebox. show ("ваше сообщение здесь");


}


}
поймать (исключение бывший)
{
бросок экс;
}

Member 13356973

Я попробую это сделать, спасибо

Nowfer Rifkan

это определенно сработает... если что-нибудь даст нам знать... удачи

Member 13356973

Я попробовал это сделать и получил такую ошибку: System.InvalidOperationException: 'ExecuteNonQuery: свойство соединения не было инициализировано'.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Member 13356973

Моя проблема была решена Мохаммедом Рифканом

1 Ответов

Рейтинг:
2

OriginalGriff

Скорее всего, что-то связанное с вашим запросом терпит неудачу, и это вызывает исключение, которое ловится в другом месте.
Измените строку на эту:

rowsAffected = SQLcm.ExecuteNonQuery();

И добавьте эту строку в верхней части метода:
int rowsAffected = -1;

Теперь заключите этот код в try...catch блокируйте и добавляйте точки останова в строке ExecuteNonQuery, а также внутри catch блок.
Снова запустите свой код внутри отладчика (для этого вы можете удалить ящики сообщений) и посмотрите, что произойдет. Когда вы запускаете ExecuteNonQuery Итак, произойдет одно из двух. Во-первых, контроль перейдет к catch блок, и вы можете посмотреть на детали исключения, чтобы понять, почему. Другая заключается в том, что rowsAffected будет установлено количество вставленных строк. Если это 1, то хорошо. Если нет ... Ну что ж, блок улов должен был его поймать!

Попробуй, и увидишь, что найдешь.


Member 13356973

Я попробую это сделать и скоро что-нибудь скажу. Спасибо

Member 13356973

строки по-прежнему оставались неизменными -1, и он ничего не вставлял...

OriginalGriff

Это было после того, как вы выполнили строку, или когда отладчик остановился на ней?

Member 13356973

когда отладчик остановил его

OriginalGriff

Когда отладчик останавливается в точке останова, он не выполняет строку. Это должно дать вам возможность взглянуть на переменные и так далее и решить, что должно произойти до выполнения строки.
Затем вы можете использовать одношаговую кнопку инструмента (которую я не могу описать, поскольку она меняется от версии к версии VS , но если вы откроете меню отладки, то получите текст и изображение кнопки), чтобы выполнить свой код построчно и точно следить за тем, что происходит.