2017-06-06 2 views
0

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"); 
+3

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. –

+2

"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? –

Antwort

0
SET IDENTITY_INSERT <TableName> ON 
-- Do the inserting in the table with name <TableName> 
SET IDENTITY_INSERT <TableName> OFF 
0

Führen Sie diesen Code auf SSMS d.h SQL Server Management Studio

ALTER TABLE [Project] DROP ProjectID 
    SET IDENTITY_INSERT <Project> OFF 
+0

@ Sorry falsche Codezeile ..nun wird es funktionieren –

Verwandte Themen