我有一個Web應用程序寫入多個數據庫以跟蹤員工變更請求。我遇到了一個加入新員工的問題。它們首先被寫入主要Employee
數據庫,然後它們的訪問信息被寫入其他數據庫,其中EMP_ID
是主鍵。當它去寫入其他數據庫EMP_ID
已被生成,所以它被輸入爲0.檢查主鍵分配
爲了解決這個問題,我試圖循環並檢查EMP_ID
值,直到產生一個值,但我繼續得到卡在一個循環中,因爲查詢返回沒有找到值。
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();
}
如何產生的EMP_ID - 它是一個自動遞增的關鍵?如果是這樣,你需要從插入語句返回這個 - 在插入之後應該像SELECT SCOPE_IDENTITY()那樣做。 – Paddy 2012-04-10 14:38:12
P.S.你也應該看看這個:http://stackoverflow.com/questions/601300/what-is-sql-injection – Paddy 2012-04-10 14:39:03
你使用多個數據庫或多個表。如果他們是多個數據庫,那麼我認爲使用自動增量ID不是一個好主意 – Habib 2012-04-10 14:40:11