2013-05-20 49 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

回答

相關問題