문제

내가 작성한 데이터베이스를 생성에서 스크립트 SQL 하고 그것을 실행하기에 Adobe AIR 응용 프로그램:

Create Table tRole (
    roleID integer Primary Key
    ,roleName varchar(40)
);
Create Table tFile (
    fileID integer Primary Key
    ,fileName varchar(50)
    ,fileDescription varchar(500)
    ,thumbnailID integer
    ,fileFormatID integer
    ,categoryID integer
    ,isFavorite boolean
    ,dateAdded date
    ,globalAccessCount integer
    ,lastAccessTime date
    ,downloadComplete boolean
    ,isNew boolean
    ,isSpotlight boolean
    ,duration varchar(30)
);
Create Table tCategory (
    categoryID integer Primary Key
    ,categoryName varchar(50)
    ,parent_categoryID integer
);
...

실행에 이 Adobe AIR 다음과 같은 방법을 사용:

public static function RunSqlFromFile(fileName:String):void {
    var file:File = File.applicationDirectory.resolvePath(fileName);
    var stream:FileStream = new FileStream();
    stream.open(file, FileMode.READ)
    var strSql:String = stream.readUTFBytes(stream.bytesAvailable);
    NonQuery(strSql);
}

public static function NonQuery(strSQL:String):void {
    var sqlConnection:SQLConnection = new SQLConnection();
    sqlConnection.open(File.applicationStorageDirectory.resolvePath(DBPATH));
    var sqlStatement:SQLStatement = new SQLStatement();
    sqlStatement.text = strSQL;
    sqlStatement.sqlConnection = sqlConnection;
    try {
        sqlStatement.execute();
    } catch (error:SQLError) {
        Alert.show(error.toString());
    }
}

오류가 생성 된,그러나만 tRole 가 존재합니다.그것은 보인다는 것만 보인에서 첫 번째 질(최대는 세미콜론으면 그것을 제거하려면 쿼리가 실패하고).가를 호출하는 방법을 여러 쿼리에서 문이 하나?

도움이 되었습니까?

해결책

상처가 있습니다.그것의 종류는 해킹이지만,그것은 꽤 잘 작동합니다.

는 유일한 것입니다 당신은 매우 조심해야하는 세미콜론으로 구분합니다.:D

var strSql:String = stream.readUTFBytes(stream.bytesAvailable);      
var i:Number = 0;
var strSqlSplit:Array = strSql.split(";");
for (i = 0; i < strSqlSplit.length; i++){
    NonQuery(strSqlSplit[i].toString());
}

다른 팁

SQLite API 에는 기능으로 불 sqlite_prepare 문 준비하고 그것을 실행을 위해,본질적으로 SQL 구문 분석하고 그것을 저장 메모리에 있습니다.즉,SQL 만 보내면서 데이터베이스 엔진에도 문을 실행됩니다.

어쨌든 문은 단일 SQL 쿼리에는 규칙이 있습니다.공 SQL API 를 보낼 수 없 원 SQL SQLite,단지 하나의 문,그 이유는,가능성,공기 사용 sqlite_prepare 기능 말할 때 SQLite.

무엇을 만드는 방법에 대한 구분이 뭔가를 좀 더 복잡한 다음과 같"; "는 표시되지 않는 모든 되는 경우가 종종 있습니다.당신은 그냥 지키면 파일을 만드는 라인을 반환 또는 두 가지에 있다.나는 끝까지 두" "창조의 파일을 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top