SQL Server CE テーブルからレコードを削除したいと考えています。
3 つのテーブル スクリプト、オプション、および結果があります。結果テーブルからレコードを削除したいと思います。where句には、他のクエリを介して取得された動的情報が含まれています。これらのクエリは正常に機能し、必要なデータを提供します。
私が得るエラーは次のとおりです。
クエリの解析中にエラーが発生しました。[ トークン ライン番号 = 1、トークン ライン オフセット = 25、トークン エラー = from ]
例外をスローするコードは次のとおりです。
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
それぞれ「My test」と「3」の値を持っています。
このクエリは SQL CE サーバーに送信されるため、'SQLParameter' を SQLCeParameter に変更したことは、今後これを読む人に言及する価値があるかもしれません。