Функция удаления Flex SQLite - PullRequest
       51

Функция удаления Flex SQLite

0 голосов
/ 05 февраля 2012

Я хотел удалить выбранный элемент из элемента управления List, но не могу. Что не так с моим кодом:

[Bindable]private var dp:ArrayCollection = new ArrayCollection();
private var conn:SQLConnection;

protected function Delete(event:MouseEvent):void    {
    Stmt = new SQLStatement();
    Stmt.sqlConnection = conn;
    Stmt.text = "DELETE FROM UserTable WHERE firstName="+listBox.selectedIndex;
    Stmt.execute();
}

<s:List id="listBox" itemRenderer="UserRenderer"></s:List>



In UserRenderer:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark">

    <s:Label text="{data.lastName}, {data.firstName}, {data.id}"/>

</s:ItemRenderer>

1 Ответ

3 голосов
/ 05 февраля 2012

List#selectedIndex относится к позиции выбранного элемента в поставщике данных. Первый элемент будет иметь индекс 0, второй индекс 1 и так далее. Если элемент не выбран, selectedIndex будет -1.

Если вы хотите выбрать или удалить по firstName - как вы делаете в своем запросе - вам нужно будет ввести правильное имя вместо позиции индекса. Вы можете сделать это с помощью свойства List#selectedItem. Также не забывайте одинарные кавычки в вашем запросе, если вы не используете параметры запроса.

"DELETE FROM UserTable " +
"WHERE firstName = '" + listBox.selectedItem.firstName + "'";

Вы не просили об этом, но я все равно скажу вам: по соображениям безопасности вы должны использовать параметры запроса при использовании переменных в ваших запросах. Один из способов добиться этого в ActionScript:

stmt.parameters[0] = listBox.selectedItem.firstName;
stmt.text = "DELETE FROM UserTable WHERE firstName = ?";

(здесь не нужно вводить одинарные кавычки)

...