2009-10-06 54 views
1

開始收到這個錯誤似乎因爲我們升級到SQL Server 2008ASP經典和SQL Server 2008給陌生的響應

當插入到數據庫,然後再返回身份,我收到了「項目不能在被發現收集對應於請求的名字或序數的錯誤。

下面是代碼:

SQL = "INSERT INTO PageFeatures(nPageFeatureFlagId,nPageFeatureFeatureId,nPageFeaturePageId) VALUES(" & nTemplateFlagId & "," & nFeatureId & "," & nPageId & "); SELECT SCOPE_IDENTITY() As nPageFeatureId;" 
objrs.open SQL,objConn,1,1 
    nPageFeatureId = objrs("nPageFeatureId") 
objrs.close 

插入工作作爲記錄在數據庫中。由於某種原因,它不會返回ID。它工作正常,並在SSMS中運行時返回id。但ASP無法看到返回的ID,所以有些原因。

任何幫助將不勝感激!

+0

您可以發佈所有正在執行的代碼? – 2009-10-06 11:34:15

+3

請仔細閱讀SQL注入攻擊 - 你的代碼很容易出現這種情況。 http://xkcd.com/327/ – 2009-10-06 11:36:00

+1

謝謝,但我們正在處理可能的sql進一步注入頁面。正在使用的值已被解析。 – jamesmhaley 2009-10-06 12:34:15

回答

1

排序:

SQL = "INSERT INTO PageFeatures(nPageFeatureFlagId,nPageFeatureFeatureId,nPageFeaturePageId) VALUES(" & nTemplateFlagId & "," & nFeatureId & "," & nPageId & ");" 
objConn.execute(SQL) 

Set oReturnValueRS = objConn.Execute("SELECT SCOPE_IDENTITY()") 
nPageFeatureId = oReturnValueRS(0).Value 
oReturnValueRS.close : set oReturnValueRS = nothing 
1

您可能需要嘗試移動記錄集?例如

SQL = "INSERT INTO PageFeatures(nPageFeatureFlagId,nPageFeatureFeatureId,nPageFeaturePageId) VALUES(" & nTemplateFlagId & "," & nFeatureId & "," & nPageId & "); SELECT SCOPE_IDENTITY() As nPageFeatureId;" 
objrs.open SQL,objConn,1,1 
    objrs.NextRecordset 
    nPageFeatureId = objrs("nPageFeatureId") 
objrs.close 

Raj的有關SQL注入意見仍然是相關的。 :)

編輯:詳細說明是有兩個記錄集在這裏玩。第一個是由insert語句創建的空的,第二個是由分號後的所有內容引起的;。這是你想要的領域。所以最初,你的objrs被附加到它的第一個記錄集(不是記錄集中的行),你轉到NextRecordset - 然後你可以處理你的請求。

+0

嘗試移動記錄集並得到以下錯誤: 多步OLE DB操作生成錯誤。檢查每個OLE DB狀態值(如果可用)。沒有工作完成 – jamesmhaley 2009-10-06 12:36:02