| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
| SQL Connection
Ich habe eine SQLConnection angelegt und greife darauf zu. Der User kann werte löschen und hinzufügen. Im DebugModus geht es wunderbar, doch im release funktioniert es garnicht. Hat jemand eine Idee warum? Compiler ist auf use-network=false Vielen Dank |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Das ist doch dein erster Post hier und dir müsste klar sein, dass man mehr Infos braucht, um helfen zu können.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
ja sorry, dachte nur dass es irgendwie vielleicht schon ne vorahnung giebt, weil ich kann nicht meinen ganzen code einfach kopieren und pasten weil da noch einiges mehr dabei is was unwichtig is. aber ich werde meine Situation gleich mal besser darstellen: Also es soll von einem AIR - MiniSpiel, der Speicherstand dreier GameSlots gespeichert werden. dazu hab ich mehrere Funktionen: Code:
private var m_mcMainClass:MovieClip;
private var m_btnStartGame:SimpleButton = new SimpleButton();
private var m_sqlconnGameSlots:SQLConnection;
private var m_sqlstmtGameTable:SQLStatement;
private var m_sqlstmtSelectQuery:SQLStatement;
private var m_sqlstmtSelectQuery2:SQLStatement;
private var m_sqlstmtUpdateQuery:SQLStatement;
private var m_dbFile:File;
private var m_arrayResultsLoading:Array = new Array();
public static var m_intSlotNo:int;
public var m_strSlotName:String;
private var m_intSlotDelete:int;
//-------------------------------------------------------------------------------------------
// CONSTRUCTOR
//-------------------------------------------------------------------------------------------
public function ScreenLoadGame ( _mcMainClass:MovieClip ) : void
{
//set Variables
m_mcMainClass = _mcMainClass;
m_sqlconnGameSlots = new SQLConnection ();
m_sqlstmtGameTable = new SQLStatement ();
m_sqlstmtSelectQuery = new SQLStatement ();
m_sqlstmtSelectQuery2 = new SQLStatement();
m_sqlstmtUpdateQuery = new SQLStatement();
addEventListeners();
startSQLConnection();
}
//-------------------------------------------------------------------------------------------
// SQL FUNCTIONS
//-------------------------------------------------------------------------------------------
private function startSQLConnection() : void
{
m_dbFile = File.applicationDirectory.resolvePath("GameData/SaveGames/Gamedata.db");
m_sqlconnGameSlots.open( m_dbFile );
}
private function sqlOpend ( event : SQLEvent ) : void
{
m_sqlconnGameSlots.removeEventListener( SQLEvent.OPEN, sqlOpend );
m_sqlconnGameSlots.removeEventListener( SQLErrorEvent.ERROR, sqlErrorCatch );
createTable();
}
private function createTable () : void
{
trace("addTo");
m_sqlstmtGameTable.sqlConnection = m_sqlconnGameSlots;
var strSQLQuery:String = "CREATE TABLE IF NOT EXISTS `VerbuggedGameSlots` (";
strSQLQuery += "`VerbuggedGameSlotID` INT NOT NULL PRIMARY KEY AUTOINCREMENT ,";
strSQLQuery += "`Slotname` VARCHAR(45),";
strSQLQuery += "`SavePlace` INT,";
strSQLQuery += "`SaveQuests` INT,";
strSQLQuery += "`Ressources` INT,";
strSQLQuery += "`SuckLevel` INT,";
strSQLQuery += "`RadarLevel` INT,";
strSQLQuery += "`Date` VARCHAR(45),";
strSQLQuery += "`SlotTaken` BOOLEAN";
strSQLQuery += ")";
trace("addToFinished");
m_sqlstmtGameTable.text = strSQLQuery;
m_sqlstmtGameTable.execute();
}
private function createTableResult ( event : SQLEvent ) : void
{
m_sqlstmtGameTable.removeEventListener( SQLEvent.RESULT, createTableResult );
m_sqlstmtGameTable.removeEventListener( SQLErrorEvent.ERROR, createTableError );
testIfSlotsAreCreated();
}
private function testIfSlotsAreCreated () : void
{
trace("SelecteID");
m_sqlstmtSelectQuery.sqlConnection = m_sqlconnGameSlots;
m_sqlstmtSelectQuery.text = "SELECT VerbuggedGameSlotID FROM VerbuggedGameSlots";
m_sqlstmtSelectQuery.execute();
trace("SelecteIDFinished");
}
private function selectionIdResult ( event : SQLEvent ) : void
{
m_sqlstmtSelectQuery.removeEventListener( SQLEvent.RESULT, selectionIdResult );
m_sqlstmtSelectQuery.removeEventListener( SQLErrorEvent.ERROR, selectionIdError );
var selectionResult:SQLResult = m_sqlstmtSelectQuery.getResult();
var arrayTestForInserts:Array = new Array();
arrayTestForInserts = selectionResult.data as Array;
if ( arrayTestForInserts == null )
{
var i:int;
for ( i = 0; i < 3; i++ )
{
var sqlstmtInsertQuery:SQLStatement = new SQLStatement();
sqlstmtInsertQuery.sqlConnection = m_sqlconnGameSlots;
trace("InsertValues");
var insertQuery:String =
"INSERT INTO `VerbuggedGameSlots` ( `Slotname`, `SaveQuests` `SavePlace`, `Ressources`, `SuckLevel`, `RadarLevel`, `SlotTaken` ) VALUES ( 'empty', 0, 0, 0, 0, 0, false)";
sqlstmtInsertQuery.text = insertQuery;
sqlstmtInsertQuery.addEventListener( SQLEvent.RESULT, insertCompleted, false, 0, true );
sqlstmtInsertQuery.execute();
}
}
else
insertCompleted( null );
}
private function insertCompleted ( event : SQLEvent ) : void
{
trace("insert competed");
m_sqlstmtSelectQuery2.addEventListener( SQLEvent.RESULT, selectionSlots, false, 0, true );
m_sqlstmtSelectQuery2.addEventListener( SQLErrorEvent.ERROR, selectionSlotsError, false, 0, true );
m_sqlstmtSelectQuery2.sqlConnection = m_sqlconnGameSlots;
m_sqlstmtSelectQuery2.text = "SELECT * FROM VerbuggedGameSlots";
m_sqlstmtSelectQuery2.execute();
trace("insert Done");
}
private function selectionSlots ( event : SQLEvent ) : void
{
m_sqlstmtSelectQuery2.removeEventListener( SQLEvent.RESULT, selectionSlots );
m_sqlstmtSelectQuery2.removeEventListener( SQLErrorEvent.ERROR, selectionSlots );
var selectionResult:SQLResult = m_sqlstmtSelectQuery2.getResult();
m_arrayResultsLoading = selectionResult.data as Array;
var i:int;
for ( i = 0; i < 3; i++ )
{
if (m_arrayResultsLoading[i].SlotTaken)
{
if ( i == 0 )
{
MovieClip(this.getChildByName("btnSlotOne")).gotoAndStop("load");
TextField(MovieClip(this.getChildByName("btnSlotOne")).getChildByName("txtQuest")).text = m_arrayResultsLoading[1].SaveQuests.toString() + " / 4";
TextField(MovieClip(this.getChildByName("btnSlotOne")).getChildByName("txtRessource")).text = m_arrayResultsLoading[1].Ressources.toString();
TextField(MovieClip(this.getChildByName("btnSlotOne")).getChildByName("txtDate")).text = m_arrayResultsLoading[1].Date.toString();
this.getChildByName("btnSlotDelete1").visible = true;
this.getChildByName("btnSlotDelete1").addEventListener( MouseEvent.CLICK, deleteSlots, false, 0, true );
}
else if ( i == 1 )
{
MovieClip(this.getChildByName("btnSlotTwo")).gotoAndStop("load");
TextField(MovieClip(this.getChildByName("btnSlotTwo")).getChildByName("txtQuest")).text = m_arrayResultsLoading[1].SaveQuests.toString() + " / 4";
TextField(MovieClip(this.getChildByName("btnSlotTwo")).getChildByName("txtRessource")).text = m_arrayResultsLoading[1].Ressources.toString();
TextField(MovieClip(this.getChildByName("btnSlotTwo")).getChildByName("txtDate")).text = m_arrayResultsLoading[1].Date.toString();
this.getChildByName("btnSlotDelete2").visible = true;
this.getChildByName("btnSlotDelete2").addEventListener( MouseEvent.CLICK, deleteSlots, false, 0, true );
}
else
{
MovieClip(this.getChildByName("btnSlotThree")).gotoAndStop("load");
TextField(MovieClip(this.getChildByName("btnSlotThree")).getChildByName("txtQuest")).text = m_arrayResultsLoading[1].SaveQuests.toString() + " / 4";
TextField(MovieClip(this.getChildByName("btnSlotThree")).getChildByName("txtRessource")).text = m_arrayResultsLoading[1].Ressources.toString();
TextField(MovieClip(this.getChildByName("btnSlotThree")).getChildByName("txtDate")).text = m_arrayResultsLoading[1].Date.toString();
this.getChildByName("btnSlotDelete3").visible = true;
this.getChildByName("btnSlotDelete3").addEventListener( MouseEvent.CLICK, deleteSlots, false, 0, true );
}
}
else
{
if ( i == 0 )
{
MovieClip(this.getChildByName("btnSlotOne")).gotoAndStop("new");
this.getChildByName("btnSlotDelete1").visible = false;
}
else if ( i == 1 )
{
MovieClip(this.getChildByName("btnSlotTwo")).gotoAndStop("new");
this.getChildByName("btnSlotDelete2").visible = false;
}
else
{
MovieClip(this.getChildByName("btnSlotThree")).gotoAndStop("new");
this.getChildByName("btnSlotDelete3").visible = false;
}
}
}
}
private function deleteSlots ( event : MouseEvent ) : void
{
var questWindow:SlotDeleteWindow = new SlotDeleteWindow ( this, m_mcMainClass );
if ( event.currentTarget.name == "btnSlotDelete1" )
m_intSlotDelete = 1;
else if ( event.currentTarget.name == "btnSlotDelete2" )
m_intSlotDelete = 2;
else if ( event.currentTarget.name == "btnSlotDelete3" )
m_intSlotDelete = 3;
}
public function deleteSlot () : void
{
m_sqlstmtUpdateQuery.sqlConnection = m_sqlconnGameSlots;
m_sqlstmtUpdateQuery.text = "UPDATE VerbuggedGameSlots SET SavePlace='0', SaveQuests='0', " +
"Ressources='0', SuckLevel='0'," +
"RadarLevel='0', Date='0', SlotTaken=false WHERE VerbuggedGameSlotID = "+ m_intSlotDelete +"";
m_sqlstmtUpdateQuery.execute();
if ( m_intSlotDelete == 1 )
{
MovieClip(this.getChildByName("btnSlotOne")).gotoAndStop("new");
this.getChildByName("btnSlotDelete1").visible = false;
}
else if ( m_intSlotDelete == 2 )
{
MovieClip(this.getChildByName("btnSlotTwo")).gotoAndStop("new");
this.getChildByName("btnSlotDelete2").visible = false;
}
else
{
MovieClip(this.getChildByName("btnSlotThree")).gotoAndStop("new");
this.getChildByName("btnSlotDelete3").visible = false;
}
}
//-------------------------------------------------------------------------------------------
// SQLError FUNCTIONS
//-------------------------------------------------------------------------------------------
............................
//-------------------------------------------------------------------------------------------
// EVENTLISTENERS - ADD AND REMOVE
//-------------------------------------------------------------------------------------------
private function addEventListeners( ) : void
{
this.getChildByName("btnSlotOne").addEventListener( MouseEvent.CLICK, removeScreenLoadGame, false, 0, true );
this.getChildByName("btnSlotTwo").addEventListener( MouseEvent.CLICK, removeScreenLoadGame, false, 0, true );
this.getChildByName("btnSlotThree").addEventListener( MouseEvent.CLICK, removeScreenLoadGame, false, 0, true );
m_sqlconnGameSlots.addEventListener( SQLEvent.OPEN, sqlOpend, false, 0, true );
m_sqlconnGameSlots.addEventListener( SQLErrorEvent.ERROR, sqlErrorCatch, false, 0, true );
m_sqlstmtGameTable.addEventListener( SQLEvent.RESULT, createTableResult, false, 0, true );
m_sqlstmtGameTable.addEventListener( SQLErrorEvent.ERROR, createTableError, false, 0, true );
m_sqlstmtSelectQuery.addEventListener( SQLEvent.RESULT, selectionIdResult, false, 0, true );
m_sqlstmtSelectQuery.addEventListener( SQLErrorEvent.ERROR, selectionIdError, false, 0, true );
}
private function removeEventListeners( ) : void
{
this.getChildByName("btnSlotOne").removeEventListener( MouseEvent.CLICK, removeScreenLoadGame, false );
this.getChildByName("btnSlotTwo").removeEventListener( MouseEvent.CLICK, removeScreenLoadGame, false );
this.getChildByName("btnSlotThree").removeEventListener( MouseEvent.CLICK, removeScreenLoadGame, false );
} Vielleicht im SQL Query irgendwoDanke schonmal Gruß |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ich meinte nicht mal Code, sondern wo sind die Unterschiede? Deployst du auf dem gleichen Rechner?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
okay ich habe jetz die fehler gefunden. waren SQL fehler. jetz habe ich aber ein anderes problem welches ich kurz beschreiben möchte. Wenn ich eine abfrage mach was in der db steckt funktioniert es wunderbar und wenn ich in Flex auf debuggen klicke dann kann ich an einer anderen stelle im menü sachen reinschreiben / ändern und dies funktionioniert einwandfrei erstelle ich eine air release, dann geht auch alles ausser, das updaten der daten. ich führe einen update query aus Code: UPDATE VerbuggedGameSlots SET SavePlace='1', SaveQuests='0', Ressources='0', SuckLevel='400',RadarLevel='200', Date='1.8.2010', SlotTaken=true WHERE VerbuggedGameSlotID = 1 Code: VerbuggedMain.textField.text += m_sqlstmtUpdateQuery.text;
m_sqlstmtUpdateQuery.addEventListener( SQLErrorEvent.ERROR, updateError );
m_sqlstmtUpdateQuery.execute();
VerbuggedMain.textField.text += "save done \n";
private function updateError ( event:SQLErrorEvent ) : void
{
VerbuggedMain.textField.text += "no update \n";
} Mein frage jetz, muss ich bevor ich auf die db schreiben kann noch etwas verändern damit er darauf zugreifen darf oder sowas ähnliches? hoffe ich konnte mein problem darlegen ist gar nicht so einfach ![]() Danke |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
hier nochmal der gesamte code Code: //-------------------------------------------------------------------------------------------
// SAVE
//-------------------------------------------------------------------------------------------
public function saveGame ( ) : void
{
m_quests = m_mcActualMovieClip.m_intQuestDone;
m_ressources = m_mcActualMovieClip.m_intRessource;
m_suckLevel = m_mcActualMovieClip.m_nNozzleDistance;
m_radarLevel = m_mcActualMovieClip.m_iRadius;
m_actualDate = new Date();
//TEXT
VerbuggedMain.textField.text += "save date "+ m_actualDate + " => " + m_actualDate.getDay() + '.' +
m_actualDate.getMonth() + '.' + m_actualDate.getFullYear() + "\n";
m_sqlconnGameSlots = new SQLConnection();
m_sqlstmtUpdateQuery = new SQLStatement();
startSQLConnection();
}
private function startSQLConnection() : void
{
//TEXT
VerbuggedMain.textField.text += "sql connection \n";
m_dbFile = File.applicationDirectory.resolvePath("GameData/SaveGames/Gamedata.db");
m_sqlconnGameSlots.addEventListener( SQLEvent.OPEN, sqlOpend );
m_sqlconnGameSlots.addEventListener( SQLErrorEvent.ERROR, sqlErrorCatch );
m_sqlconnGameSlots.open( m_dbFile, SQLMode.UPDATE );
}
private function sqlOpend ( event : SQLEvent ) : void
{
//TEXT
VerbuggedMain.textField.text += "sqlOpend \n "
m_sqlconnGameSlots.removeEventListener( SQLEvent.OPEN, sqlOpend );
m_sqlconnGameSlots.removeEventListener( SQLErrorEvent.ERROR, sqlErrorCatch );
updateDatabase ();
}
public function updateDatabase () : void
{
trace("save");
VerbuggedMain.textField.text += "start save \n";
m_sqlstmtUpdateQuery.sqlConnection = m_sqlconnGameSlots;
m_sqlstmtUpdateQuery.text = "UPDATE VerbuggedGameSlots SET SavePlace='1', SaveQuests='"+ m_quests +"', " +
"Ressources='"+ m_ressources +"', SuckLevel='"+ m_suckLevel +"'," +
"RadarLevel='"+ m_radarLevel +"', Date='"+ m_actualDate.getDate().toString() + '.' + ( m_actualDate.getMonth()+1 ) + '.' +
m_actualDate.getFullYear() +"', SlotTaken=true WHERE VerbuggedGameSlotID = "+ m_SlotID +"";
trace("saveq", m_sqlstmtUpdateQuery.text);
//TEXT
VerbuggedMain.textField.text += m_sqlstmtUpdateQuery.text + " \n";
VerbuggedMain.textField.text += "start executing \n"
m_sqlstmtUpdateQuery.addEventListener( SQLErrorEvent.ERROR, updateError );
m_sqlstmtUpdateQuery.execute();
trace("save done");
VerbuggedMain.textField.text += "save done \n";
}
private function updateError ( event:SQLErrorEvent ) : void
{
VerbuggedMain.textField.text += "no update \n";
}
private function sqlErrorCatch ( event:SQLErrorEvent ) : void
{
VerbuggedMain.textField.text += "no connection \n";
trace("noUpdate");
} |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
also ich komm einfach nicht drauf. woran kann es liegen dass er im Debugmodus den Update Query ausführt aber im release nicht? Mit meinem selbstgebauten TraceField kommt er bei Debugmodus komplett durch bis zum abschließen und bei release gibt er nur noch das letze vor dem execute aus danach wird nihct mehr ausgeführt aber ein SQLError wird auch nicht geworfen (siehe Code oben)? Woran kann das liegen hat noch jemand eine Idee? |
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Zum einen könnte dein Code etwas leichter zu lesen sein zum ander: schliesst du deinen Datenbankverbindungen nicht?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Man schliesst Datenbankverbindungen - was für eine Frage?! Man will unter anderem Resourcen freigeben und Seiteneffekte vermeiden.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
okay ich hab jetz ein close eingebaut aber das problem ist immernoch ein anderes. Code: VerbuggedMain.textField.text += "start executing \n";
m_sqlstmtUpdateQuery.addEventListener( SQLErrorEvent.ERROR, updateError );
m_sqlstmtUpdateQuery.addEventListener( SQLEvent.RESULT, updateErrordone );
m_sqlstmtUpdateQuery.execute();
VerbuggedMain.textField.text += "save done \n";
}
private function updateErrordone ( event:SQLEvent ) : void
{
m_sqlconnGameSlots.close();
VerbuggedMain.textField.text += "resulte event \n";
}
private function updateError ( event:SQLErrorEvent ) : void
{
VerbuggedMain.textField.text += "no update \n";
} ... start executing resulte event save done im release steht da folgendes drin ... start executing das wars?! brint aber auch kein fehler oder der gleichen ?! |
| | |
| | #13 (permalink) | |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
hallo nochmals ich habe ne neue erkenntnis. also ich habe eine try catch um das execute gemacht und er wirft dann doch einen fehler aus und zwar mit der id 3122 Zitat:
DANKE FÜR DIE HILFE | |
| | |
| | #14 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Wie kannst du in einem Release Build traces verwenden?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 152
|
ich habe ein textfeld erstellt welches über allem liegt aber mouseEnabled = false gestezt ist und die var ist static somit kann ich ja über Class.TextField.text = "trace" anstelle von trace("text") verwenden. Und dabei habe ich die Fehlernummer 3122 erhalten was ja die erklärung von oben heißt...allerdings weiß ich jetz nicht wie ich machen kann dass ich darauf schreiben kann weil ich ja über Code: m_sqlconnGameSlots.open( m_dbFile, SQLMode.UPDATE ); |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| PHP IRC Connection | komashooter | PHP und MySQL | 3 | 25-07-2006 12:02 |
| xml socket connection | zungenbrecher | Flash MX 2004 | 4 | 21-10-2005 16:56 |
| local connection | metleck | Flash MX 2004 | 5 | 01-08-2005 14:58 |
| local connection und der mac | sniper85 | ActionScript 1 | 2 | 28-06-2005 16:48 |
| local connection | sniper85 | ActionScript 1 | 1 | 03-06-2005 15:47 |