2013-05-20 87 views
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中可以正常工作。什么可能会导致此错误?

+2

奇怪,第三行是第一个的重复。 – Steve

+0

更正。尽管如此,这并没有解决问题,但例外情况依然如此。 – kyooryu

+0

检出[this](http://stackoverflow.com/a/682775/468973)回答。 – Magnus

回答

相关问题