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