SQLStatement.execute()-쿼리를 여러 개 하나의 문에서
-
08-06-2019 - |
문제
내가 작성한 데이터베이스를 생성에서 스크립트 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.
무엇을 만드는 방법에 대한 구분이 뭔가를 좀 더 복잡한 다음과 같"; "는 표시되지 않는 모든 되는 경우가 종종 있습니다.당신은 그냥 지키면 파일을 만드는 라인을 반환 또는 두 가지에 있다.나는 끝까지 두" "창조의 파일을 잘 작동합니다.
제휴하지 않습니다 StackOverflow