2017-02-13 3 views
0

У меня есть таблица с именем MesaiBilgileri и столбцов Id, AdiSoyadi, Mesai, MesaiTarih ...команды Update не работает, но нет ошибки

я выбрал бы информацию из таблицы с именем PersonelBilgileri с этим кодом:

private void cboxAdSoyadMesai_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string secilipersonel = cboxAdSoyadMesai.Text; 
    baglan.Open(); 

    SqlCommand komut = new SqlCommand("Select *from PersonelBilgileri WHERE AdiSoyadi = '" + secilipersonel + "'", baglan); 

    SqlDataReader oku = komut.ExecuteReader(); 

    while (oku.Read()) 
    { 
     lbId.Text = oku["Id"].ToString(); 
    } 

    baglan.Close(); 
} 

Я хотел бы использовать невидимую метку, чтобы взять вещи Id для написать еще одну таблицу ...

Тогда с этим значением, я пошел бы в другую таблицу и обновлять эту таблицу с этим со de:

private void mesaiekle() 
{ 
    string secilitarih = dtpMesai.Value.ToShortDateString(); //combobox for pick date 
    string secilipersonel = cboxAdSoyadMesai.Text; //combobox for pick employee 
    int mesaiId; 
    mesaiId = Convert.ToInt32(lbId.Text); //another table's Id value from invisible label... 

    baglan.Open(); 

    SqlCommand komut = new SqlCommand("UPDATE MesaiBilgileri SET Id = '"+ mesaiId +"' , AdiSoyadi = '"+ secilipersonel +"' , Mesai = '" + cboxSaatMesai.Text + "' , MesaiTarih = @tarih", baglan); 
    komut.Parameters.Add("@tarih", SqlDbType.DateTime).Value = secilitarih; 

    komut.ExecuteNonQuery(); 

    baglan.Close(); 
} 

С помощью этого кода, когда я нажимаю кнопку сохранения;

private void btnMesaiEkle_Click(object sender, EventArgs e) 
{ 
    if ((cboxSaatMesai.Text == string.Empty) && (cboxAdSoyadMesai.Text == string.Empty)) 
    { 
     MessageBox.Show("Eklemek İstediğiniz Mesai Bilgilerini Seçmek Zorundasınız", "HATA!!"); 
    } 
    else 
    { 
     mesaiekle(); 
     MessageBox.Show("" + cboxAdSoyadMesai.Text + " İçin Mesai Eklendi", "Mesai Ekleme Durumu"); 
    } 
} 

Когда я нажимаю на кнопку сохранить, я вижу MessageBox подтверждение, но таблица не обновляется ... Там нет ошибки ... Я новичок в кодировании, так что я могу сделать?

Извините за мой английский:/

+1

Использование отладчика см., что такое значение 'komut.CommandText' перед выполнением этой строки:' komut.ExecuteNonQuery(); ' – CodingYoshi

+0

Почему вы используете параметры для динамического запроса? – McNets

+0

Используйте try/catch, по крайней мере, при отладке, чтобы убедиться, что ошибок нет. Также проверьте CommandText команды и посмотрите, будет ли она что-либо обновлять при запуске непосредственно в SSMS. И, построив SQL, вы откроете вам SQL-инъекцию, которую вы должны Google, а не игнорировать, потому что вы сосредоточены на том, чтобы заставить ее работать. – Crowcoder

ответ

0
string secilitarih = dtpMesai.Value.ToShortDateString(); 

Создайте свою команду обновления без параметров использования:

SqlCommand komut = new SqlCommand("UPDATE MesaiBilgileri SET Id = '" 
            + mesaiId 
            +"' , AdiSoyadi = '" 
            + secilipersonel 
            +"' , Mesai = '" 
            + cboxSaatMesai.Text 
            + "' , MesaiTarih = " 
            + "cast ('" + secilitarih + "' as datetime) " 
            + ", baglan); 

Добавьте окно сообщения или контрольную точку, чтобы проверить текст команды.

MessageBox.Show(komut.CommandText); 

Если у вас есть какие-то проблемы с изменением формата даты secilitarih к:

string secilitarih = dtpMesai.Value.ToString("yyyy-MM-dd"); 
+0

Нет обновления нет ошибки:/ –

+0

Commandtext выглядит хорошо, у меня есть какие значения, которые я хочу ... но таблица MesaiBilgileri пуста ... попробуйте обновить и снова подключить, но ее пустой ... –

+0

Перед обновлением вы должны ВСТАВИТЬ некоторые ряд!! – McNets

1

Вы должны отметить несколько вещей здесь. Вы имеете дело с различными типами данных в этом единственном запросе. Переменная mesaiId определяется как целое (не уверен, как поле определено в базе данных). вам не нужно передавать целочисленное значение в пару одиночных кавычек. И почему некоторые значения являются параметрами? почему не все параметры запроса? Сделать попытку с этим:

SqlCommand komut = new SqlCommand("UPDATE MesaiBilgileri SET Id = @mesaiId, AdiSoyadi [email protected],Mesai = @cboxSaatMesai, MesaiTarih = @tarih", baglan); 

komut.Parameters.Add("@mesaiId", SqlDbType.Int).Value = mesaiId; 
komut.Parameters.Add("@secilipersonel", SqlDbType.VarChar).Value = secilipersonel; 
komut.Parameters.Add("@cboxSaatMesai", SqlDbType.VarChar).Value = cboxSaatMesai.Text; 
komut.Parameters.Add("@tarih", SqlDbType.DateTime).Value = secilitarih; 

komut.ExecuteNonQuery(); 

Примечание: - Имейте в виду, что она обновит все строки в таблице, так как вы не указали каких-либо условий, если вам нужно обновить определенные строки, то вы должны добавить Where Id = @mesaiId или что-то вроде этого

Смежные вопросы