#c# #sql-server #datagridview #sql-delete #delete-row
Вопрос:
Я хочу удалить выбранную текущую строку в datagrid из среды Microsoft SQL Server Management Studio, но это приводит к синтаксической ошибке, что бы я ни делал. (Я нажму на строку и удалю данные в SQL)Вот коды и ошибки, которые я получил:
Вы можете мне помочь, дорогие друзья? Спасибо.
Во-первых: ОШИБКА : «Неправильный синтаксис рядом»=»».
private void VeriSİL()
{
baglan.Open();
string bgn = cwGrid.CurrentRow.Cells[0].Value.ToString();
string m1 = cwGrid.CurrentRow.Cells[1].Value.ToString();
string m2 = cwGrid.CurrentRow.Cells[2].Value.ToString();
string m3 = cwGrid.CurrentRow.Cells[3].Value.ToString();
string kturu = cwGrid.CurrentRow.Cells[4].Value.ToString();
string m1m = cwGrid.CurrentRow.Cells[5].Value.ToString();
string m2m = cwGrid.CurrentRow.Cells[6].Value.ToString();
string m3m = cwGrid.CurrentRow.Cells[7].Value.ToString();
string urunno = cwGrid.CurrentRow.Cells[8].Value.ToString();
string guc = cwGrid.CurrentRow.Cells[9].Value.ToString();
string hiz = cwGrid.CurrentRow.Cells[10].Value.ToString();
string odk = cwGrid.CurrentRow.Cells[11].Value.ToString();
string gaz = cwGrid.CurrentRow.Cells[12].Value.ToString();
string aci = cwGrid.CurrentRow.Cells[13].Value.ToString();
string noz = cwGrid.CurrentRow.Cells[14].Value.ToString();
string sur = cwGrid.CurrentRow.Cells[15].Value.ToString();
string foto = cwGrid.CurrentRow.Cells[16].Value.ToString();
string not = cwGrid.CurrentRow.Cells[17].Value.ToString();
SqlCommand komut = new SqlCommand("delete from CW where Beğeni = '" bgn "' AND [1.Malz] = '" m1 "' AND [2.Malz] = '" m2 "' AND [3.Malz] = '" m3 "' AND Kaynaktürü = '" kturu "' AND [1/mm] = '" m1m "' AND [2/mm] = '" m2m "' AND [3/mm] = '" m3m "' AND ÜrünNo = '" urunno "'AND Güç = '" guc "' AND Hız = '" hiz "' AND Gaz = = '" gaz "' AND Açı = '" aci "' AND Nozzle = '" noz "' AND Süre = '" sur "' AND Foto= '" foto "' AND [Not]= '" noz "'", baglan);
komut.ExecuteNonQuery();
baglan.Close();
}
private void silButton_Click(object sender, EventArgs e)
{
VeriSİL();
}
Моя вторая попытка и ошибка : «Неправильный синтаксис рядом»,»».
private void VeriSİL()
{
baglan.Open();
SqlCommand komut = new SqlCommand("Delete CW WHERE Beğeni=@bgn,[1.Malz]=@m1,[2.Malz]=@m2,[3.Malz]=@m3,KaynakTürü=@kturu,[1/mm]=@m1m,[2/mm]=@m2m,[3/mm]=@m3m,Güç=@guc,Hız=@hiz,Odak=@odk,Gaz=@gaz,Açı=@aci,Nozzle=@noz,Süre=@sur,Foto=@foto,[Not]=@not,ÜrünNo=@urunno", baglan);
komut.Parameters.AddWithValue("@bgn", cwGrid.CurrentRow.Cells[0].Value.ToString());
komut.Parameters.AddWithValue("@m1", cwGrid.CurrentRow.Cells[1].Value.ToString());
komut.Parameters.AddWithValue("@m2", cwGrid.CurrentRow.Cells[2].Value.ToString());
komut.Parameters.AddWithValue("@m3", cwGrid.CurrentRow.Cells[3].Value.ToString());
komut.Parameters.AddWithValue("@kturu", cwGrid.CurrentRow.Cells[4].Value.ToString());
komut.Parameters.AddWithValue("@m1m", cwGrid.CurrentRow.Cells[5].Value.ToString());
komut.Parameters.AddWithValue("@m2m", cwGrid.CurrentRow.Cells[6].Value.ToString());
komut.Parameters.AddWithValue("@m3m", cwGrid.CurrentRow.Cells[7].Value.ToString());
komut.Parameters.AddWithValue("@urunno", cwGrid.CurrentRow.Cells[8].Value.ToString());
komut.Parameters.AddWithValue("@guc", cwGrid.CurrentRow.Cells[9].Value.ToString());
komut.Parameters.AddWithValue("@hiz", cwGrid.CurrentRow.Cells[10].Value.ToString());
komut.Parameters.AddWithValue("@odk", cwGrid.CurrentRow.Cells[11].Value.ToString());
komut.Parameters.AddWithValue("@gaz", cwGrid.CurrentRow.Cells[12].Value.ToString());
komut.Parameters.AddWithValue("@aci", cwGrid.CurrentRow.Cells[13].Value.ToString());
komut.Parameters.AddWithValue("@noz", cwGrid.CurrentRow.Cells[14].Value.ToString());
komut.Parameters.AddWithValue("@sur", cwGrid.CurrentRow.Cells[15].Value.ToString());
komut.Parameters.AddWithValue("@foto", cwGrid.CurrentRow.Cells[16].Value.ToString());
komut.Parameters.AddWithValue("@not", cwGrid.CurrentRow.Cells[17].Value.ToString());
komut.ExecuteNonQuery();
MessageBox.Show("Silme İşlemi Başarılı.");
baglan.Close();
}
private void silButton_Click(object sender, EventArgs e)
{
VeriSİL();
}
Моя последняя попытка и ошибка: «Выражение не булева типа, указанное в контексте, где ожидается условие, рядом»,».»
private void VeriSİL()
{
baglan.Open();
SqlCommand komut = new SqlCommand("Delete from CW where Beğeni,[1.Malz],[2.Malz],[3.Malz],KaynakTürü,[1/mm],[2/mm],[3/mm],ÜrünNo,Güç,Hız,Gaz,Odak,Açı,Nozzle,Süre,Foto,[Not] like '"
cwGrid.CurrentRow.Cells[0].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[1].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[2].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[3].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[4].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[5].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[6].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[7].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[8].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[9].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[10].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[11].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[12].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[13].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[14].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[15].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[16].Value.ToString() "' , '"
cwGrid.CurrentRow.Cells[17].Value.ToString() "'", baglan);
komut.ExecuteNonQuery();
MessageBox.Show("Silme İşlemi Başarılı.");
baglan.Close();
}
private void silButton_Click(object sender, EventArgs e)
{
VeriSİL();
}
Комментарии:
1. Ваша первая попытка должна быть отброшена. Он широко открыт для внедрения sql. Ваша вторая попытка с использованием параметров лучше, но ваш синтаксис не является допустимым sql. Вероятно, вам не нужно просматривать каждую отдельную колонку в вашем удалении, только первичный ключ.
2. Прежде всего, научитесь использовать параметры, чтобы избежать sql-инъекции и ошибки, которую вы получаете. Кроме того, если в вашей строке есть поле уникального идентификатора, вы просто удалите его на основе этого, и не все эти поля будут соответствовать вашим значениям, что все равно может привести к удалению более одной записи.
3. @SeanLange Как я могу это сделать? потому что я не использую уникальный идентификатор. Я попытался «Удалить ИЗ CW Begeni=@bgn…» Удалите CW, где начинается=…» Когда я исследовал в Интернете, я попробовал большинство из них (удалить из CW, удалить CW, где..), и все результаты одинаковы и ошибка. У вас есть какие-нибудь предложения по этому поводу?
4. Ваш синтаксис в версии параметра вашего поста содержит все условия, разделенные запятой, что не является допустимым синтаксисом. Это, вероятно, должно быть «И». Поместите уникальные идентификаторы в свои таблицы.
5. Не используйте addwithvalue