• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Бд В С#

  • Автор темы alekca2292
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

alekca2292

ребят,. предупреждаю сразу я не ас...

Код:
//Адресс БД
string conn = "Data Source=apteka.sdf";
//Переменная, создающая команду, которая посылается в БД и там Выполняется
SqlCeCommand command;
//Создание подключения к БД
SqlCeConnection sq = new SqlCeConnection(conn);
//Открытие Подключения
sq.Open();

if (kurs.ind == 0)
{
int regnum = Convert.ToInt16(textBox1.Text);
int kolvo = Convert.ToInt16(textBox2.Text);
DateTime datazak = DateTime.Now;
textBox1.Clear();
textBox2.Clear();
//sql запрос в бд, чтобы добаить строчку
string s = "Insert into zakaz values ( 1, " + regnum + ", " + kolvo + ", '" + datazak + 
"');";
//Создание запроса
command = new SqlCeCommand(s, sq);
//Делает необходимые изменения в бд
command.ExecuteReader();
//Перезагрузка табличных данных, чтобы в вашей DataGridView были обновленные данные
this.zakazTableAdapter.Fill(this.aptekaDataSet.zakaz);
zakazTableAdapter.Update(aptekaDataSet);
}
sq.Close();

в DataSet записывает а в БД не сохраняет, что я не то сделала?
заранее спасибо
 
L

LuMee

Может, стоит вместо ExecuteReader вызывать у command'а метод ExecuteNonQuery?
И да, не следует так собирать запросы, лучше передавать значения через параметры команды.
 
L

LuMee

Можете приаттачить проект вместе с базой? Поглядим вживую.
 
A

alekca2292

воть
 

Вложения

  • apteka_Pil.zip
    330 КБ · Просмотры: 156
L

LuMee

Смотрю, уже решили делать все через TableAdapter. В этом случае для новых строк настоятельно рекомендуется вызывать AcceptChanges, чтобы сохранить внесенные изменения. Ну и раз уж вы пользуетесь типизированным датасетом, лучше использовать созданные в нем классы строк и таблиц вместо обычных DataRow и DataTable.
В общем, у меня работает такой код:
Код:
if (kurs.ind == 0)
{
DataRow[] row = aptekaDataSet.Tables["sklad"].Select("regnum =" + Convert.ToInt16(textBox1.Text));
if (row.Count() == 0)
{
DialogResult res1 = MessageBox.Show("Такого лекарства нет на складе ", "Что-то не то",
MessageBoxButtons.OK,
MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
else
{
var r = aptekaDataSet.zakaz.NewzakazRow();
r.numatp = 2;
r.regnum = Convert.ToInt16(textBox1.Text);
r.kolvo = Convert.ToInt16(textBox2.Text);
r.datazak = DateTime.Today;
r.AcceptChanges();

aptekaDataSet.zakaz.AddzakazRow(r);					
aptekaDataSet.zakaz.AcceptChanges();
this.zakazTableAdapter.Update(aptekaDataSet.zakaz);

this.Validate();
this.zakazBindingSource.EndEdit();					
}	
// ну и что там было дальше...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!