Zuerst erlaubte ich Benutzer in Combobox eingeben, um schnell zu suchen, wenn es viele Projekte gibt. Ich frage mich, ob ich die Einfügeabfrage stoppen kann, wenn der Benutzer versehentlich einen zusätzlichen Buchstaben drückt, und es wird Null verursachen, und ich hatte try catch
Block, aber es zeigt nur Fehlermeldung, aber der Primärschlüssel überspringen eine Zahl.Wie vermeidet man die automatische Erhöhung des Primärschlüssels beim Einfügen der Abfrage?
ProjectID Auswahl comboBox
private void GetProjectID()
{
newConnection.ConnectionM();
SqlCommand cmd = SqlConnectionOLTP.cn.CreateCommand();
cmd.CommandText = "Select * from Project where ProjectName='" + comboBoxProjectTitle.Text + "' ";
try
{
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
ProjectID = reader.GetInt32(0);
}
reader.Close();
SqlConnectionOLTP.cn.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Einfügen in die Datenbank zu füllen:
SqlCommand cmd = SqlConnectionOLTP.cn.CreateCommand();
cmd.CommandText = "Insert into Cost(ProjectID,PropertyID,CostCategoryID,EstimatedAmount) values ('" + ProjectID + "','" + PropertyID + "','" + CostCatID + "'," + "'" + textBoxAmount.Text + "') ";
cmd.ExecuteNonQuery();
SqlConnectionOLTP.cn.Close();
MessageBox.Show("Saved");
seriousl y: Verkette niemals eine Eingabe, um SQL zu erstellen; das ist "Datenbanken 101" - oder mindestens "105" (und war OWASP # 1 ("A1") * für immer *). Bitte verwenden Sie bitte Parameter. –
"aber der Primärschlüssel überspringen eine Nummer" - das ... ist kein Problem; Sie sollten nicht * erwarten *, dass die Primärschlüssel alle zusammenhängend sind, und IMO ist es eine sehr schlechte Idee, dies zu "reparieren" - das ist das Lösen des falschen Problems; Was ist das * aktuelle Problem * hier? –