我有一个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();
}
答案 0 :(得分:1)
你可以使用
SELECT IDENT_CURRENT(‘tablename’)
这将为您提供表的最后插入的自动增量ID,您可以使用它在其他表中插入
答案 1 :(得分:1)
好的,所以如果你的插入sproc看起来像:
sp_InsertEmp
...
INSERT INTO Emp(Name, etc...)
VALUES ('Paul', etc...)
SELECT SCOPE_IDENTITY() AS EMP_ID
GO
在您的代码中:
SqlCommand insertCmd = new SqlCommand("sp_InsertEmp", dbConnection);
... Add parameters here and set type to StoredProcedure
SqlDataReader dr= insertCmd.ExecuteReader();
int newId;
if (dr.Read())
{
newId = dr.GetInteger(0);
}