flex – SQLStatement.execute() – 在一个语句中的多个查询
发布时间:2020-12-15 02:12:05 所属栏目:百科 来源:网络整理
导读:我在 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
我在
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()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |