Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-08-2009, 14:48   #1 (permalink)
Neuer User
 
Benutzerbild von oma420
 
Registriert seit: Sep 2008
Ort: zu Hause
Beiträge: 152
Sqlite verbindung

Hallo zusammen, ich versuche gerade mit As3 "Air" eine verbindung zu mein lokalen Datenbank zuerstellen, leider scheitere ich dabei und komme nicht weiter.

hier ist mein script
Code:
package DiS.xml {
	
	import flash.events.*;
	import flash.data.*;
	import flash.filesystem.File;
	
	public class Xml_In_Sqlite{
		
		private var conn:SQLConnection = new SQLConnection(); 
		private var dbFile:File;
		private var createStatement:SQLStatement;
		//private var dbFile:String;
			
		
		public function XmlInSqlite(){

			conn.addEventListener(SQLEvent.OPEN, openHandler);
			conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
			//SQL-Datenbank abgespeichert (->Desktop)
			dbFile = File.desktopDirectory.resolvePath("test.db");
			
			// DB/Datei öffnen; wenn nicht vorhanden, neue Datei		
			// (Default ist immer SQLMode.CREATE, könnte also auch weggelassen werden)
			conn.openAsync(dbFile, SQLMode.CREATE);
			
			//writeIntoDatabase("Max Mustermann");
			
		}		
			
		private function openHandler(event:SQLEvent):void{
    		trace("mit Datenbank verbunden");
		}

		private function errorHandler(event:SQLErrorEvent):void{
		    trace("Fehler:", event.error.message);
		    trace("Details:", event.error.details);
		}
		
		public function writeIntoDatabase(str:String):void{

			// create the SQL statement
			var insertStatement:SQLStatement = new SQLStatement();
			insertStatement.sqlConnection = conn;
		
			// define the SQL text
			var insertSql:String = "INSERT INTO kunden (id,Name1) " + "VALUES ('" + str + "')";

			
			insertStatement.text = insertSql;
		
			// statement ausführen
			insertStatement.execute();
		}
		
	}	
}
mein .fla aufruf

Code:
var Send = new Xml_In_Sqlite();
//Send.XmlInSqlite();
Send.writeIntoDatabase("test");

und ich bekom folgenden fehlermeldung
Code:
Error: Error #3104: A SQLConnection must be open to perform this operation.
	at Error$/throwError()
	at flash.data::SQLStatement/checkAllowed()
	at flash.data::SQLStatement/checkReady()
	at flash.data::SQLStatement/execute()
	at DiSell.xml::Xml_In_Sqlite/writeIntoDatabase()[C:\Dokumente und Einstellungen\belal\Eigene Dateien\Flash CS4\XML.AS\DiS\xml\Xml_In_Sqlite.as:57]
	at DiSell_fla::MainTimeline/frame1()[DiSell_fla.MainTimeline::frame1:13]
	at runtime::ContentPlayer/loadInitialContent()
	at runtime::ContentPlayer/playRawContent()
	at runtime::ContentPlayer/playContent()
	at runtime::AppRunner/run()
	at global/runtime::ADLEntry()
__________________
Gruß,

oma420

Geändert von oma420 (18-08-2009 um 14:50 Uhr) Grund: fehler behoben
oma420 ist offline   Mit Zitat antworten
Alt 18-08-2009, 22:07   #2 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Das Problem an deiner Lösung ist, dass bei folgendem Aufruf:
PHP-Code:
var Send = new Xml_In_Sqlite();
//Send.XmlInSqlite();
Send.writeIntoDatabase("test"); 
Deine Anwendung nicht wartet, bis die Verbindung aufgebaut ist, sondern geht sofort weiter zum Send.writeInfoDatabase() und zu diesem Zeitpunkt die Verbindung aber noch nicht aufgebaut.

Du musst also warten bis
PHP-Code:
private function openHandler(event:SQLEvent):void{
            
trace("mit Datenbank verbunden");
        } 
reagiert. Dann kann du deine Anfrage stellen.

Lösungsansatz:
Du könntest der Funktion XmlInSqlite(sql:String) einen Parameter sql übergeben, der dann an den openHandler übergeben wird und ausgeführt wird.
Also so in etwa:

PHP-Code:
private var sql:String "";

public function 
XmlInSqlite(sql:String){
    
this.sql sql;
    ...
    
}        
    
private function 
openHandler(event:SQLEvent):void{
    
trace("mit Datenbank verbunden");
    
writeInfoDatabase(this.sql);
}

public function 
writeIntoDatabase(str:String):void{

    ...

Und der Aufruf dann mit:

PHP-Code:
var Send = new Xml_In_Sqlite("Test"); 
Ich hoffe das war verständlich

Lg,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 19-08-2009, 09:10   #3 (permalink)
Neuer User
 
Benutzerbild von oma420
 
Registriert seit: Sep 2008
Ort: zu Hause
Beiträge: 152
Hey danke dir, dein ansatz war richtig...
Ich hab es aber einbischen aderes gemacht...
jetzt geht das auch
__________________
Gruß,

oma420
oma420 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 15:03 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele