2
我正試圖在sql查詢中運行一堆SQL語句。查詢和代碼如下所示:SQL Server CE查詢無法在c#中執行,但在DBMS中工作
private void cancelTestCaseCreationWizard()
{
string deleteTestCaseCmd = @"
DELETE FROM column_correlation WHERE test_id IN (SELECT test_id FROM test WHERE test_case_id = @tcid);
DELETE FROM data_range WHERE test_id IN (SELECT test_id FROM test WHERE test_case_id = @tcid);
DELETE FROM permitted_values WHERE test_id IN (SELECT test_id FROM test WHERE test_case_id = @tcid);
DELETE FROM test WHERE test_case_id = @tcid;
DELETE FROM parameter WHERE parameter_set_id IN (SELECT parameter_set_id from parameter_set WHERE test_case_id = @tcid);
DELETE FROM parameter_set WHERE test_case_id = @tcid;
DELETE FROM test_case WHERE test_case_id = @tcid;";
List<SqlCeParameter> param = new List<SqlCeParameter>();
SqlCeParameter tcid = new SqlCeParameter("@tcid", SqlDbType.Int);
tcid.Value = reservedTestCaseId;
param.Add(tcid);
DatabaseInteraction.DMLQuery(deleteTestCaseCmd, param);
Dispose();
}
public static int DMLQuery(string query, List<SqlCeParameter> parameters)
{
int rowsAffected = -1;
try
{
DBConn.Open();
var tran = DBConn.BeginTransaction();
SqlCeCommand comm = new SqlCeCommand(query, DBConn, tran);
foreach (SqlCeParameter par in parameters)
{
comm.Parameters.Add(par);
}
comm.ExecuteNonQuery();
tran.Commit();
}
catch (SqlCeException e)
{
MessageBox.Show("Error executing DML query \n" + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return -2;
}
DBConn.Close();
return rowsAffected;
}
上面的代碼執行後,我得到的消息:
Error executing DML query
There was an error parsing the query. [ Token line number = 3,Token line offset = 41,Token in error = DELETE ]
我擡頭@tcid的價值,它是正確的。查詢本身在DBMS中可以正常工作。什麼可能會導致此錯誤?
奇怪,第三行是第一個的重複。 – Steve
更正。儘管如此,這並沒有解決問題,但例外情況依然如此。 – kyooryu
檢出[this](http://stackoverflow.com/a/682775/468973)回答。 – Magnus