gpt4 book ai didi

apache-flex - Adobe Air/Flex + SQLite 数据库问题

转载 作者:行者123 更新时间:2023-12-03 12:39:54 24 4
gpt4 key购买 nike

我仍然是 Adob​​e Air/Flex 的新手,并且对 SQL 还是很陌生。

我已经下载了this ( http://coenraets.org/blog/2008/11/using-the-sqlite-database-access-api-in-air ...-part-1/) 代码并且一直在查看它,我正在尝试实现相同的想法。

我认为这只是一件愚蠢的事情。我正在使用 Flex Builder。我做了一个新的桌面应用程序项目,没有导入任何东西。

我添加了一个 DataGrid 对象并将其绑定(bind)到一个 ArrayCollection:

我正在尝试这样做,因此当程序初始化时,它将从数据库中加载数据(如果存在),否则它将创建一个新数据。

问题是,当应用程序运行时,数据网格是空的。没有列标题,没有数据,什么都没有。我试过改变一大堆东西,我用调试器来确保所有的函数都像他们应该的那样被调用。我不知道我做错了什么。我已经将我的代码与前面提到的代码进行了比较,我在 Google 上查找了教程。有人知道我在做什么错吗?

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="672" height="446"
applicationComplete="onFormLoaded()"
title="iRecipes">

<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

private var sqlConnection:SQLConnection;
[Bindable] private var recipeList:ArrayCollection;

private function onFormLoaded():void
{
sqlConnection = new SQLConnection();
openDataBase();
}

private function openDataBase():void
{
var file:File = File.userDirectory.resolvePath("recipes.db");

sqlConnection.open(file, SQLMode.CREATE);

if(!file.exists)
{
createDatabase();
}

populateRecipeList()
}

private function createDatabase():void
{
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConnection;
statement.text = "CREATE TABLE Recipes (recipeId INTEGER PRIMARY KEY AUTOINCREMENT, recipeName TEXT, authorName TEXT)";
statement.execute();

statement.text = "INSERT INTO Recipes (recipeName, authorName) VALUES (:recipeName, :authorName)";

statement.parameters[":recipeName"] = "Soup";
statement.parameters[":authorName"] = "Joel Johnson";
statement.execute();

statement.parameters[":recipeName"] = "Garbage";
statement.parameters[":authorName"] = "Bob Vila";
statement.execute();
}

private function populateRecipeList():void
{
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConnection;

statement.text = "SELECT * FROM Recipes";
statement.execute();
recipeList = new ArrayCollection(statement.getResult().data);
}
]]>
</mx:Script>

<mx:DataGrid dataProvider="{recipeList}">

</mx:DataGrid>
</mx:WindowedApplication>

最佳答案

我刚刚用你的代码试过了。我进行了更改并删除了条件,因为我收到有关表不存在的错误。

 //if(!file.exists)
//{
createDatabase();
//}

这使数据网格显示了正确的信息。我认为您初始化数据库文件的方式有问题。我现在正在研究它。

尝试使用
sqlConnection.open(file, SQLMode.CREATE);

相反,用于打开数据库。

关于apache-flex - Adobe Air/Flex + SQLite 数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/395886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com