Как удалить строку из таблицы SQL Server CE?

голоса
1

Я хочу, чтобы удалить запись из таблицы SQL Server CE.

Есть 3 таблицы сценарии, параметры и результаты. Я хотел бы, чтобы удалить запись из таблицы результатов. Пункт, где содержит динамическую информацию, найденную с помощью других запросов. Эти запросы работают нормально и доставить нужные данные.

Ошибки я получаю:

Была ошибка разбора запроса. [Знак номер строки = 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, лексема ошибки = от]

CommandText из cmdDel перед казнью является

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» respectivley.

Может быть, стоит отметить, для тех, кто читает это в будущем, что я изменил «SqlParameter» в SQLCeParameter, как этот запрос будет к SQL CE Server.

Задан 01/02/2013 в 09:47
источник пользователем
На других языках...                            


1 ответов

голоса
0

Вы должны использовать Table alies(г) , которые вы дали для ResultsTableправильно , как;

//--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() 
Ответил 01/02/2013 в 09:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more