Бд В С#

Тема в разделе ".NET", создана пользователем alekca2292, 5 янв 2012.

Статус темы:
Закрыта.
  1. alekca2292

    alekca2292 Гость

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

    Код (Text):
    //Адресс БД
    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 записывает а в БД не сохраняет, что я не то сделала?
    заранее спасибо
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Может, стоит вместо ExecuteReader вызывать у command'а метод ExecuteNonQuery?
    И да, не следует так собирать запросы, лучше передавать значения через параметры команды.
     
  3. alekca2292

    alekca2292 Гость

    пробовала, тож не получается(((
    запрос брала у другого чел-ка у него он нормально работает, и в БД заносит
     
  4. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Можете приаттачить проект вместе с базой? Поглядим вживую.
     
  5. alekca2292

    alekca2292 Гость

    воть
     

    Вложения:

    • apteka_Pil.zip
      Размер файла:
      330 КБ
      Просмотров:
      2
  6. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Смотрю, уже решили делать все через TableAdapter. В этом случае для новых строк настоятельно рекомендуется вызывать AcceptChanges, чтобы сохранить внесенные изменения. Ну и раз уж вы пользуетесь типизированным датасетом, лучше использовать созданные в нем классы строк и таблиц вместо обычных DataRow и DataTable.
    В общем, у меня работает такой код:
    Код (Text):
    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();                 
    }  
    // ну и что там было дальше...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей