Я делаю проект по вставке данных о слонах из центра сохранения в его базу данных. В нем я предполагаю, что некоторые слоны рождаются в нем, а некоторые одарены. Поэтому я надеюсь сохранить в базе данных два типа дат. Когда слон рождается, у него должен быть только день рождения, тогда как, как если бы слон был подарен, у него должны быть две даты: дата прибытия и день рождения.

Я закодировал вставляющий запрос.

            try
        {
            if (rbm.Checked == true)
            {
                gen = "Male";
            }
            else if (rbf.Checked == true)
            {
                gen = "Female";
            }
            if (rbgr.Checked == true)
            {
                med = "gifres";
            }
            else if (rbb.Checked == true)
            {
                med = "born";
            }
            String save_emp_query = "INSERT INTO ElephantData VALUES('" + txtidentyno.Text + "','" + txtelname.Text + "','" + cmbspecies.Text + "','" + gen + "','" + med + "','" + dtpdob.Text + "','" + dtpdoa.Text + "','" + cmbcon.Text + "')";
            cmd = new SqlCommand(save_emp_query, con);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            MessageBox.Show("Elephant " + txtelname.Text + " (" + txtidentyno.Text + ") successfully saved to the database!", "Saved!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            clear();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error while Saving....." + Environment.NewLine + ex);
        }

Здесь у меня проблема при сохранении дат. Если я хочу спасти слона, рожденного в центре, у него не должно быть даты прибытия. Поэтому я игнорирую средство выбора даты прибытия и сохраняю данные в базе данных. Когда я просматриваю данные в своей базе данных, для даты прибытия сохраняется значение по умолчанию.

enter image description here

Мне нужно оставить столбец даты прибытия пустым, вставив в него нулевое значение. Как это сделать?

1
Akila Ranasinghe 17 Сен 2018 в 09:12

2 ответа

Лучший ответ

Во-первых, создание запросов из .NET - не лучшая практика. Вместо,

  1. Используйте запрос и передавайте значения в качестве параметров в SqlCommand или
  2. Используйте хранимую процедуру и передавайте значения в качестве параметров в SqlCommand
  3. В качестве альтернативы вы можете использовать существующий подход и передать значение null, например:

string save_emp_query = "ВСТАВИТЬ ЗНАЧЕНИЯ ElephantData ('" + txtidentyno.Text + "', '" + txtelname.Text + "', '" + cmbspecies.Text + "', '" + gen + "', '" + med + "','" + dtpdob.Text + "', null,'" + cmbcon.Text + "')"

Если вы можете следовать подходам 1 и 2, вы можете обратиться к приведенному ниже коду:

// 1. declare command object with parameter
SqlCommand cmd = new SqlCommand(
"INSERT INTO ElephantData VALUES(@IdNo, @Species ....., conn);

// 2. define parameters used in command object
    SqlParameter param  = new SqlParameter();
    param.ParameterName = "@IdNo";
    param.Value         = txtidentyno.Text;
    SqlParameter param2  = new SqlParameter();
    param2.ParameterName = "@Species";
    param2.Value         = cmbspecies.Text;

// 3. add new parameter to command object
    cmd.Parameters.Add(param);

// 4. Finally Execute Query
cmd.ExecuteNonQuery();
1
Habeeb 17 Сен 2018 в 06:36

Может тебе нужно такое состояние

if(dtpdoa.Text == ''){
 String save_emp_query = "INSERT INTO ElephantData VALUES('" + txtidentyno.Text + "','" + txtelname.Text + "','" + cmbspecies.Text + "','" + gen + "','" + med + "','" + dtpdob.Text + "',null,'" + cmbcon.Text + "')";
}else{
 String save_emp_query = "INSERT INTO ElephantData VALUES('" + txtidentyno.Text + "','" + txtelname.Text + "','" + cmbspecies.Text + "','" + gen + "','" + med + "','" + dtpdob.Text + "','" + dtpdoa.Text + "','" + cmbcon.Text + "')";
}
0
Rangga 17 Сен 2018 в 06:22