2013-02-01 93 views
1

我想從SQL Server CE表中刪除記錄。如何從SQL Server CE表中刪除行?

有3個表格腳本,選項和結果。我想從結果表中刪除記錄。 where子句包含通過其他查詢檢索的動態信息。這些查詢工作正常,並提供所需的數據。

我得到的錯誤是:

有解析查詢時出現錯誤。 [令牌行號= 1,令牌行偏移= 25,令牌在錯誤=從]

拋出異常是如下所述的代碼:

Dim connLoc As SqlCeConnection = New SqlCeConnection(My.Settings.ConnectionString) 
connLoc.Open()  
Dim strDel As String = "Delete ResultsTable from ResultsTable r inner join OptionsTable o ON o.TestName=r.TestName inner join ScriptTable c ON r.TestName=c.TestName WHERE r.TestName = '" & ds1Loc.Tables(0).Rows(0)(1) & "' AND [Index] = '" & lstIndex & "'" 
Dim cmdDel As SqlCeCommand = New SqlCeCommand 
cmdDel.CommandText = strDel 
cmdDel.Connection = connLoc 
cmdDel.ExecuteScalar() 

ds1Loc.Tables(0).Rows(0)(1)lstIndex保持的值是正確的應該不是問題。

此查詢還適用於SQL Server。是否SQL CE不支持與SQL Server 2008相同的刪除功能?

編輯

使用KAFS建議例外以下解決方案仍然是相同的:

有解析查詢時出現錯誤。 [令牌行號= 1,令牌 線在誤差偏移= 10,令牌=從]

cmdDel的CommandText執行之前是

Delete r from ResultsTable r inner join OptionsTable o ON o.TestName=r.TestName inner join ScriptTable c ON r.TestName=c.TestName WHERE r.TestName = @TestName AND [Index] = @lstIndex 

@TestName@lstIndex具有 '我的測試' 的值和'3'。

可能值得一提的是,隨着此查詢轉到SQL CE服務器,我將'SQLParameter'更改爲SQLCeParameter。

回答

0

您需要使用正確的Table alies(r);

//--Correct way 
Dim strDel As String = "Delete r from ResultsTable r ..." 

//--Following is wrong 
Dim strDel As String = "Delete ResultsTable from ResultsTable r ..." 

而且最好是使用Parameterized query而不是傳遞字符串,然後ExecuteNonQuery()Close()連接在最後的答覆

Dim strDel As String = "Delete r from ResultsTable r inner join OptionsTable o 
         ON o.TestName=r.TestName inner join ScriptTable c 
         ON r.TestName=c.TestName WHERE r.TestName = @TestName 
         AND [Index] = @LastIndex" 

With cmdDel.Parameters 
     .Add(New SqlParameter("@TestName", ds1Loc.Tables(0).Rows(0)(1))) 
     .Add(New SqlParameter("@LastIndex", lstIndex)) 
End With 
... 
cmdDel.ExecuteNonQuery() 
+0

感謝。我仍然收到一個異常,這次略有不同:'解析查詢時出錯。 [令牌行號= 1,令牌行偏移= 10,令牌出錯=來自]。 – redned

+0

我已經更新了更多細節的答案。你可以在執行之前顯示'strDel'字符串中的內容。 – Kaf

+0

再次感謝,不幸的是,例外保持不變。我已經更新了我的原始問題,並且在嘗試編輯後的版本中更新了細節,因爲它更容易閱讀,而且在評論框中也不能有多個「@」符號。 – redned