加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读