root/as3/SQLControls/samples/SQLiteDataManager/SQLiteDataManager.as

リビジョン 206, 4.0 kB (コミッタ: daoki2, コミット時期: 4 年 前)

add directory

  • svn:executable 属性の設定値: *
Line 
1 import flash.events.*;
2 import mx.events.*;
3 import mx.controls.Alert;
4 import mx.collections.ArrayCollection;
5 import org.libspark.utils.SqlUtil;
6 import org.libspark.snippets.controls.SQLDataGrid;
7
8 [Bindable]
9 private var cbTableList_data:Array;
10
11 private var columns:ArrayCollection;
12
13 private function buildSQL(table:String):String {
14     columns = SqlUtil.getColumnDef(connection, table);
15     var sql:String = "SELECT ";
16     for each(var val:* in columns)
17         sql += val.name + ", ";
18     sql = sql.substring(0, sql.length - 2);
19     sql += " FROM " + table;
20     return sql;
21 }
22
23 private function cbTableList_close(event:DropdownEvent):void {
24     dg.executeQuery(buildSQL(String(event.target.selectedItem)));
25 }
26
27 private function bAddRow_click(event:MouseEvent):void {
28     var rowData:ArrayCollection = new ArrayCollection();
29     for each(var val:* in columns)
30         rowData.addItem({column: val.name, type: val.type, value: null});
31     var status:Boolean = SqlUtil.insertRow(connection, String(cbTableList.selectedItem), rowData);
32     dg.executeQuery(buildSQL(String(cbTableList.selectedItem)));
33 }
34
35 private function bDelRow_click(event:MouseEvent):void {
36     if (dg.selectedIndex < 0)
37         return;
38
39     var record_id:int = dg.selectedItem.record_id;
40     var status:Boolean = SqlUtil.deleteRow(connection, String(cbTableList.selectedItem), "record_id", record_id);
41     dg.executeQuery(buildSQL(String(cbTableList.selectedItem)));
42 }
43
44 private function onClosing(event:Event):void {
45     trace("Application closing...");
46     if (connection != null)
47         if(connection.connected)
48             connection.close();
49 }
50
51 private function onItemEditBegin(event:DataGridEvent):void {
52     if (event.columnIndex == 0)
53         event.preventDefault();
54 }
55
56 private function onItemEditEnd(event:DataGridEvent):void {
57     if (event.reason == DataGridEventReason.CANCELLED)
58         return;
59
60     var item:Object = event.itemRenderer.data;
61     var column:String = event.dataField;
62     var columnType:String;
63     var itemEditor:Object = dg.itemEditorInstance;
64
65     if (itemEditor.text == item[column])
66         return;
67
68     for each(var val:* in columns) {
69         if (val.name == column) {
70             columnType = val.type;
71             break;
72         }
73     }
74
75     var status:Boolean = SqlUtil.updateRow(connection, String(cbTableList.selectedItem), "record_id", item.record_id,
76                                            column, itemEditor.text, columnType);
77 }
78
79 private var connection:SQLConnection = new SQLConnection();
80 private var dg:SQLDataGrid = new SQLDataGrid();
81
82 private function init():void {
83     addEventListener(Event.CLOSING, onClosing);
84     dg.x = 20; dg.y = 64; dg.width = 680; dg.height = 396;
85     dg.editable = true;
86     dg.addEventListener(DataGridEvent.ITEM_EDIT_BEGIN, onItemEditBegin);
87     dg.addEventListener(DataGridEvent.ITEM_EDIT_END, onItemEditEnd);
88     addChild(dg);
89     openDB();
90 }
91
92 private function openDB():void {
93     var dbFile:File = new File();
94     var dbFilter:FileFilter = new FileFilter("DB File", "*.db");
95     try {
96         dbFile.browseForOpen("Open", [dbFilter]);
97         dbFile.addEventListener(Event.SELECT, dbFileSelected);
98         dbFile.addEventListener(Event.CANCEL, dbFileCanceled);
99     } catch (error:Error) {
100         Alert.show(error.message, "ERROR!");
101     }
102 }
103
104 private function dbFileSelected(event:Event):void {
105     try {
106         connection.open(File(event.target), SQLMode.READ);
107         dg.sqlConnection = connection;
108         getTableList();
109     } catch(error:Error) {
110         Alert.show(error.message, "ERROR!");
111     }
112 }
113
114 private function dbFileCanceled(event:Event):void {
115     try {
116         var path:String = "file://" + File.documentsDirectory.nativePath + "/user.db";
117         connection.open(new File(path), SQLMode.CREATE);
118         dg.sqlConnection = connection;
119         getTableList();
120     } catch(error:Error) {
121         Alert.show(error.message, "ERROR!");
122     }
123 }
124
125 private function getTableList():void {
126     cbTableList_data = SqlUtil.getTableList(connection);
127     dg.executeQuery(buildSQL(cbTableList_data[0]));
128 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。