Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-09-2008, 11:27   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 167
Unhappy air und sqlite

bin absoluter anfänger mit as3, hab mir aber, ohne mich vorher mit der syntax zu beschäftigen, in den kopf gesetzt, es gleich mit einer air-datenbank-anwendung zu probieren...

der fehler, den ich bei meinem script bekomme, ist ein sql-fehler.
ich weiß partout nicht mehr weiter, woran es liegt.
kann mir evtl einer sagen, was ich falsch mache?

meine sql-lite-datenbank:
PHP-Code:
CREATE TABLE `flearn` (
  `
idint(11NOT NULL,
  `
salutationvarchar(255NOT NULL,
  `
titlevarchar(255NOT NULL,
  `
firstnamevarchar(255NOT NULL,
  `
lastnamevarchar(255NOT NULL,
  `
fieldvarchar(255NOT NULL,
  `
companyvarchar(255NOT NULL,
  `
streetvarchar(255)  NOT NULL,
  `
zipcodevarchar(255NOT NULL,
  `
townvarchar(255)  NOT NULL,
  `
countryvarchar(255NOT NULL,
  `
emailvarchar(255NOT NULL,
  `
mailinfovarchar(4)  NOT NULL,
  `
mailinfo2varchar(255NOT NULL,
  `
datedate NOT NULL,
  `
projectvarchar(50NOT NULL,
  
PRIMARY KEY  (`id`)
)  ;



INSERT INTO `flearn` (`id`, `salutation`, `title`, `firstname`, `lastname`, `field`, `company`, `street`, `zipcode`, `town`, `country`, `email`, `mailinfo`, `mailinfo2`, `date`, `project`) VALUES (1'Herr''''Ulle''Miller''Arzt''meine Firma''mein Block 1''10119''Berlin''Deutschland''icke@meinefirma.de''yes''''2008-08-27''test'); 


meine as3-klasse:
PHP-Code:


package dataget 
{
    

    
import flash.events.*;
    
import flash.filesystem.File;
    
import flash.data.*;
    
    
    
    public class 
GetData{
        
        public var 
conn:SQLConnection
        
public var selectStmt:SQLStatement
        
public var res:SQLResult
        
public var myArray:Array
        
        
        
        public function 
connect():void {
            
            
conn = new SQLConnection();
            
conn.addEventListener(SQLEvent.OPENopenHandler);
            
conn.addEventListener(SQLErrorEvent.ERRORerrorHandler);
    
            
// var dbFile:File = File.applicationStorageDirectory.resolvePath("test.db");
            // var dbFile:File = File.desktopDirectory.resolvePath("test.db");
            
var dbFile:File File.applicationDirectory.resolvePath("test.db");
            
            
conn.open(dbFile);    
            
            
trace("connect");
            
        }
        
        
        public function 
openHandler(event:SQLEvent):void{
            
            
selectStmt = new SQLStatement();
            
selectStmt.sqlConnection conn;
            
            
selectStmt.text "SELECT * FROM flearn";
        
            
            
// event listeners
            
selectStmt.addEventListener(SQLEvent.RESULTresultHandler);
            
selectStmt.addEventListener(SQLErrorEvent.ERRORerrorHandler2);
            
            
            
// statement ausführen
            
selectStmt.execute();
            
            
// ergebnis ablegen
            
res selectStmt.getResult();
            
            
trace("open");

        }
        
        

        
        function 
resultHandler(event:SQLEvent):void {
        
            
// anzahl der einträge
            
var numResults:int res.data.length;
            
myArray = new Array(numResults);

            
                
trace("results: "+numResults);
    
                
// schleife
                
for (var i:int 0<numResultsi++) {
            
                    
                    var 
n:Object res.data[i];
                    var 
subArray:Array = new Array(16);
                    
                    
                    
//id, salutation, title, firstname, lastname, field, company, street, zipcode, town, country, email, mailinfo, mailinfo2, date, project
                    
subArray[0] = n.id "";
                    
subArray[1] = n.salutation;
                    
subArray[2] = n.title;
                    
subArray[3] = n.firstname;
                    
subArray[4] = n.lastname;
                    
subArray[5] = n.field;
                    
subArray[6] = n.company;
                    
subArray[7] = n.street;
                    
subArray[8] = n.zipcode;
                    
subArray[9] = n.town;
                    
subArray[10] = n.country;
                    
subArray[11] = n.email;
                    
subArray[12] = n.mailinfo;
                    
subArray[13] = n.mailinfo2;
                    
subArray[14] = n.date "";
                    
subArray[15] = n.project;
                    
                    
myArray[i] = subArray;
    
                }

        }
                

        function 
errorHandler(event:SQLErrorEvent):void {
            
trace("****");
        }
        
        function 
errorHandler2(event:SQLErrorEvent):void {    
            
myArray = new Array();
            var 
subArray1:Array = new Array(1);
            
subArray1[0]= "kein Ergebnis";
            
myArray[0] = subArray1;
            
trace("kein datenbankergebnis");
        }

        
    }
                



meine fla-datei:

PHP-Code:
import dataget.GetData;

var 
gd:GetData = new GetData();

gd.connect();

myText.text ="test:" gd.myArray[0][11]; 

meine fehlermeldung:

PHP-Code:
SQLError'Error #3115: SQL Error.'details:'no such table: flearn'operation:'execute'
    
at flash.data::SQLStatement/internalExecute()
    
at flash.data::SQLStatement/execute()
    
at dataget::GetData/openHandler()
    
at flash.data::SQLConnection/internalOpen()
    
at flash.data::SQLConnection/open()
    
at dataget::GetData/connect()
    
at firstA3_fla::MainTimeline/frame1() 

wenn ich das gleiche sql-statement direkt im sqlite-manager ausführe, erhalte ich das einwandfreie ergebnis.


wäre dankbar, wenn mir einer einen tip geben könnte.
__________________
miller

Geändert von miller (15-09-2008 um 15:24 Uhr)
miller ist offline   Mit Zitat antworten
Alt 15-09-2008, 11:46   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.407
Hi,

Zitat:
bin absoluter anfänger mit as3, hab mir aber, ohne mich vorher mit der syntax zu beschäftigen, in den kopf gesetzt, es gleich mit einer air-datenbank-anwendung zu probieren...
Das ist Dein Fehler. Verstehe mich nicht falsch, aber ein As3 Projekt ohne As3-Kenntnisse ist schwer. Eine Air-Anwendung ohne As3-Kenntnisse ist sehr oft sehr schwer.

Eine AIR-Datenbank-Anwendung ohne As3-Kenntnisse ist super schwer/unmöglich.



Kann Dir wirklich nahe legen, Dich mit der Materie zu beschäftigen. Macht auch mehr Spaß, wenn man den Code versteht und nicht nur Copy&Paste machen muss.
Ein weiteres Problem von AIR ist, das Dir kaum jemand hilft, da es nur weniger aktiv benutzen.

Zu Deinem Fehler...
Du erstellst ja nirgendwo die Datenbank, bzw. die Tabelle? Kein Wunder, dass er es nicht finden kann.

Gruß, Nico
Nico B. ist gerade online   Mit Zitat antworten
Alt 15-09-2008, 11:56   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 167
hi nico,

erstmal danke für deine antwort.

also den code hab ich schon selber geschrieben.
auch glaube ich, daß das actionscript einigermaßen ok ist.
(bis halt auf den sql-datei-zugriff)


das table baue ich nicht mit actionscript.
das hab ich in die sql-lite datenbank per manager reingeschrieben.
das muß ich doch eigentlich auch nicht mit create table in actionscript bauen, wenn die datenbank schon da ist !?

oder doch?



greez

miller
__________________
miller

Geändert von miller (15-09-2008 um 12:05 Uhr)
miller ist offline   Mit Zitat antworten
Alt 15-09-2008, 12:05   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.407
Ne musste natürlich nicht, habe ich übersehen.


Ich arbeite derzeit an einer Klasse für das Erstellen und bearbeiten von SQLLite-Datenbanken.

Allerdings, brauche ich noch etwas. Wenn ich fertig bin, stelle ich's gerne Online.


Greets.
Nico B. ist gerade online   Mit Zitat antworten
Alt 15-09-2008, 13:16   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 167
problem gelöst

ok,

ich hab mein problem gelöst.
die lösung war banal.
weil ich heute gut drauf bin verrate ich auch die antwort:
hab nur den pfad zur datenbank falsch eingelesen.

anstelle
var dbFile:File = File.applicationStorageDirectory.resolvePath("test .db");

oder
var dbFile:File = File.desktopDirectory.resolvePath("test.db");

muß es heißen:
var dbFile:File = File.applicationDirectory.resolvePath("test.db");



damit habt ihr auch ein ganz nettes beispiel hier stehen.
mein erster versuch mit as3...

__________________
miller

Geändert von miller (15-09-2008 um 16:24 Uhr)
miller ist offline   Mit Zitat antworten
Alt 15-09-2008, 14:06   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.407
Hat es einen bestimmten Grund, warum Du dbFile nicht auch oben bei den anderen Variablen schreibst, um sie später zu "befüllen" ?

private var dbFile:File;


...

dbFile = File.applicationDirectory.resolvePath("test.db");



Greets, Nico
Nico B. ist gerade online   Mit Zitat antworten
Alt 15-09-2008, 15:14   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 167
nö, hat keinen ganz speziellen grund.
aber das dbFile brauch ich ja nur bei der connection.
die anderen kommen ja in mehrern funktionen vor.

ansonsten hab ich nochmal ein paar einträge, die public waren, in private geändert,
denn ich denke, es ist am besten, nur die sachen, die man wirklich public braucht, auch public zu setzen.
nur die variable myArray und die function connect() sind public.
aber ich bin wie gesagt kein as-experte...

PHP-Code:



package dataget 
{
    

    
import flash.events.*;
    
import flash.filesystem.File;
    
import flash.data.*;
    
    
    
    public class 
GetData{
        
        private var 
conn:SQLConnection
        
private var selectStmt:SQLStatement
        
private var res:SQLResult
        
public var myArray:Array
        


        public function 
connect(){
            
connector();
        }
        
        
        private function 
connector():void {
            
            
conn = new SQLConnection();
            
conn.addEventListener(SQLEvent.OPENopenHandler);
            
conn.addEventListener(SQLErrorEvent.ERRORerrorHandler);
    
            var 
dbFile:File File.applicationDirectory.resolvePath("test.db");
            
            
conn.open(dbFile);    
            
            
trace("connect");
            
        }
        
        
        private function 
openHandler(event:SQLEvent):void{
            
            
selectStmt = new SQLStatement();
            
selectStmt.sqlConnection conn;
            
            
selectStmt.text "SELECT * FROM `flearn`";
        
            
            
// event listeners
            
selectStmt.addEventListener(SQLEvent.RESULTresultHandler);
            
selectStmt.addEventListener(SQLErrorEvent.ERRORerrorHandler2);
            
            
            
// statement ausführen
            
selectStmt.execute();

            
            
trace("open");

        }
        
        

        
        private function 
resultHandler(event:SQLEvent):void {
            
            
// ergebnis ablegen
            
res selectStmt.getResult();
        
            
// anzahl der einträge
            
var numResults:int res.data.length;
            
myArray = new Array(numResults);

            
                
trace("results: "+numResults);
    
                
// schleife
                
for (var i:int 0<numResultsi++) {
            
                    
                    var 
n:Object res.data[i];
                    var 
subArray:Array = new Array(16);
                    
                    
                    
//id, salutation, title, firstname, lastname, field, company, street, zipcode, town, country, email, mailinfo, mailinfo2, date, project
                    
subArray[0] = n.id "";
                    
subArray[1] = n.salutation;
                    
subArray[2] = n.title;
                    
subArray[3] = n.firstname;
                    
subArray[4] = n.lastname;
                    
subArray[5] = n.field;
                    
subArray[6] = n.company;
                    
subArray[7] = n.street;
                    
subArray[8] = n.zipcode;
                    
subArray[9] = n.town;
                    
subArray[10] = n.country;
                    
subArray[11] = n.email;
                    
subArray[12] = n.mailinfo;
                    
subArray[13] = n.mailinfo2;
                    
subArray[14] = n.date "";
                    
subArray[15] = n.project;
                    
                    
myArray[i] = subArray;
    
                }

        }
                

        public function 
errorHandler(event:SQLErrorEvent):void {
            
trace("****");
        }
        
        public function 
errorHandler2(event:SQLErrorEvent):void {    
            
myArray = new Array();
            var 
subArray1:Array = new Array(1);
            
subArray1[0]= "kein Ergebnis";
            
myArray[0] = subArray1;
            
trace("kein datenbankergebnis");
        }

        
    }
        
        


__________________
miller

Geändert von miller (15-09-2008 um 15:22 Uhr)
miller ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele