Ich habe eine Webanwendung, die in mehrere Datenbanken schreibt, um Änderungsanforderungen von Mitarbeitern zu verfolgen. Ich stoße auf ein Problem mit der Eingabe eines neuen Mitarbeiters. Sie werden zuerst in die Hauptdatenbank Employee
geschrieben, bevor ihre Zugriffsinformationen in die anderen Datenbanken geschrieben werden, wobei EMP_ID
der Primärschlüssel ist. Wenn es geht in die anderen Datenbanken zu schreiben EMP_ID
wurde noch generiert, so dass es als 0 eingegeben wird.Überprüfung auf primäre Schlüsselzuweisung
Um dies zu beheben Ich habe versucht, die EMP_ID
Wert Schleife und überprüfen, bis ein Wert generiert wird, aber ich weiterhin zu bekommen Steht in einer Schleife fest, weil die Abfrage zurückgibt, dass kein Wert gefunden wurde.
while (int.Parse(empIDChecker) == 0)
{
dbConnection.Open();
validateIDSQLString = "SELECT EMP_ID FROM EMPLOYEE_TABLE WHERE FIRST_NAME = '" + firstNameTextBox.Text.Trim() + "' AND LAST_NAME = '" + lastNameTextBox.Text.Trim() + "'";
SqlCommand updateSQLCmd = new SqlCommand(validateIDSQLString, dbConnection);
SqlDataReader getRecords = updateSQLCmd.ExecuteReader();
try
{
empIDChecker = getRecords["EMP_ID"].ToString();
}
catch
{
empIDChecker = "0";
}
getRecords.Close();
dbConnection.Close();
}
Wie ist Ihr EMP_ID erzeugt - ist es ein Auto-Taste Erhöhen? Wenn dies der Fall ist, müssen Sie dies aus Ihrer insert-Anweisung zurückgeben - etwas wie SELECT SCOPE_IDENTITY() nach dem Einfügen sollte es tun. – Paddy
P.S. Sie sollten sich das auch anschauen: http://stackoverflow.com/questions/601300/what-is-sql-injection – Paddy
Verwenden Sie mehrere Datenbanken oder mehrere Tabellen. Und wenn sie mehrere Datenbanken sind, dann denke ich, dass die Verwendung von Autoinkrement-ID keine gute Idee ist. – Habib