2012-08-28 3 views
0

내 코드가 내 모든 쿼리에 대해 null을 반환하는 이유를 해결하기 위해 노력하고 있으며 결국 sql 쿼리가 아무것도 반환하지 않는다는 사실을 발견했습니다. 최소한의 코드 :이 코드 프로그래머에 비해SQL 오류 : "해당 테이블이 없습니다"

<fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      private var sqlConnection:SQLConnection; 
      private var select:SQLStatement; 
      private var databaseFile:File; 

      protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void 
      { 
       var dbPath:String = "Movie Manager Settings/moovioDB2.db"; 
       databaseFile = File.userDirectory.resolvePath(dbPath); 
       sqlConnection = new SQLConnection(); 
       select = new SQLStatement(); 

       sqlConnection.addEventListener(SQLEvent.OPEN, onDatabaseOpen); 
       sqlConnection.openAsync(); 
      } 

      private function onDatabaseOpen(event:SQLEvent):void 
      { 
       select.sqlConnection = sqlConnection; 
       var query:String = "SELECT title FROM movies"; 
       select.text = query; 
       select.addEventListener(SQLEvent.RESULT, done); 
       select.execute(); 
      } 

      private function done(event:SQLEvent):void{ 
       var res:SQLResult = select.getResult(); 
      } 

     ]]> 
    </fx:Script> 

다른 플렉스 만든 바로 표준 태그입니다 : 나는 새로운 AIR 문서 (WindowedApplication들)을 만들었습니다. 나는 2 개 개의 다른 SQLite는 프로그램과 데이터베이스 파일을 확인하고 성공적으로 쿼리를 실행 한

Error #2044: Unhandled SQLErrorEvent:. errorID=3115, operation=execute , message=Error #3115: SQL Error. , details=no such table: 'movies' 

: 실행시 나는이 오류가 발생합니다. '영화'테이블과 '제목'열이 모두 존재합니다. 영화가 중요한 경우에는 3 개의 테이블 중 하나이며 모든 값이있는 열이 10 개 이상 있습니다.

내가 뭘 잘못하고 있니? 이전에 예상했던 결과와 동일한 코드를 사용했지만, 일부 변경 사항을 적용한 후에도이 기본 코드를 새 문서에서 사용할 수 있습니다. 그것을 확인하고 나는 그것을 볼 수 없기 때문에 어리석은 실수를하고 있는지 확인하십시오 :)

답변

1

열어 본 데이터베이스의 경로가 외부 도구로 확인한 파일 중 하나인지 확인할 수 있습니까? AS3 코드 내에서 database_list pragma을 사용할 수 있습니다. 다른 SQL 문으로 실행하십시오 :

[[email protected] ~]$ cd /tmp 
[[email protected] tmp]$ sqlite3 foo.db 
SQLite version 3.7.11 2012-03-20 11:35:50 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> pragma database_list; 
0|main|/tmp/foo.db 
+0

"query"를 "var query : String ="PRAGMA database_list ";"로 바꾸시겠습니까? "오류 # 2044 : 처리되지 않은 SQLErrorEvent : 오류 ID = 3115, 작업 = 실행, 메시지 = 오류 # 3115 : SQL 오류., 세부 정보 = PRAGMA는 SQL에서 허용되지 않습니다." 그렇지 않은 경우 AS에서이 쿼리를 실행하는 방법을 지정할 수 있습니까? – DominicM

+0

Doh! 이것은 내가 잠시 동안 만든 가장 실망스러운 실수 여야합니다. 나는 데이터베이스 파일의 위치를 ​​결코 "openAsync()"로 전달하지 않았습니다. :) – DominicM

+0

답변을 수락하면 문제가 표시됩니다. 감사합니다. 동일한 문제가있을 수있는 다른 사용자를 위해 수정 사항을 포함하여 답변을 업데이트하십시오. "sqlConnection.openAsync();"대신 " 그것은 "sqlConnection.openAsync (databaseFile);"이어야합니다. – DominicM

관련 문제