0
我有一個插入查詢,如下所示。然而,scopeIdentity
不返回42,它返回1042SCOPE_IDENTITY()返回千位數
這是SQL Server表:
我的代碼:
int masterId = 0;
using (SqlConnection cmd = new SqlConnection(connString))
{
using (SqlCommand conn = cmd.CreateCommand())
{
conn.CommandText = "INSERT INTO[MasterReportData]([ReportName],[CaseList],[EmployeeId],[datetime]) VALUES(@reportName, @caseList, @employeeId, @datetime) SET @ID = SCOPE_IDENTITY()";
conn.Parameters.Add("@reportName", SqlDbType.VarChar).Value = reportName;
conn.Parameters.Add("@caseList", SqlDbType.VarChar).Value = caseList;
conn.Parameters.Add("@employeeId", SqlDbType.Char).Value = employeeId;
conn.Parameters.Add("@datetime", SqlDbType.DateTime).Value = datetime;
conn.Parameters.Add("@ID", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Open();
conn.ExecuteNonQuery();
masterId = Convert.ToInt32(conn.Parameters["@ID"].Value);
cmd.Close();
}
}
缺少分號; ?你爲什麼認爲它應該返回42?即使最後一行是'41',回滾插入或刪除可能導致計數器前進 –
因此,如果您查看數據庫,實際插入了什麼值?在身份欄中跳轉1000次相當常見(自2012年起,IIRC),無論如何,如果您關心*實際數值*,我建議您使用身份錯誤。 –
使用以下命令檢查您的標識列的當前值:'SELECT IDENT_CURRENT('MasterReportData')' - 它返回什麼? –