2013-11-20 6 views
0

I, m, используя следующий код для вставки нескольких записей в Sqlite db, но я, m не получаю и не вставил записи.Вставка нескольких записей в flex

private var planActivities:SQLStatement; 
private var planActivitiesSQL:String = 'INSERT INTO DailyActivities (timestamp, activityId, activityDescription, hours, calPerMin, hoursCompleted, exercisePlanId)        VALUES (:timestamp, :activityId, :activityDescription, :hours, :calPerMin, :hoursCompleted, :exercisePlanId)'; 

      private function addPlannedActivities(activities:ArrayCollection):void 
     { 

      var currentDate:Date = new Date(); 
      var numberLoops:Number = 0; 

      trace("\nNumber of Activities to add " + activities.length); 

      planActivities = new SQLStatement(); 
      planActivities.sqlConnection = model.connection; 
      planActivities.text = planActivitiesSQL; 
      model.connection.begin(); 

      for(var i:uint=0; i < activities.length; i++) 
      {     

       planActivities.parameters[":timestamp"] = currentDate; 
       planActivities.parameters[":activityId"] = activities[i].activityId; 
       planActivities.parameters[":activityDescription"] = activities[i].activityName; 
       planActivities.parameters[":hours"] = activities[i].hours; 
       planActivities.parameters[":calPerMin"] = activities[i].calPerMin; 
       planActivities.parameters[":hoursCompleted"] = activities[i].totalCal; 
       planActivities.parameters[":exercisePlanId"] = planId; 

       planActivities.execute();     
      } 


      model.connection.commit(); 

      var resultCheck:SQLResult = planActivities.getResult(); 
      trace("\nNumber of rows affected : " + resultCheck.rowsAffected); 

      navigator.pushView(exerciseMainView, model); 
     } 

У меня были прослушиватели событий для результата SQL и ошибки, но это продолжало давать мне ошибки. Есть вопросы, ответы на которые могут быть решены с помощью INSERT и UNION SELECT Sqlite.

Я хотел знать, как это можно сделать в Flex и ActionScript.

+0

Вы должны Сделок, смотрите здесь: http://www.slideshare.net/peterelst/introduction-to-sqlite-in-adobe-air-1627545 Целые слайды полезны, но транзакции - 14-й. – gMirian

+0

Спасибо, за указатель. Я попробовал его с транзакцией, но, похоже, он ничего не добавляет, даже если он не дает никаких ошибок. Я обновил вышеуказанный код. – corefragments

ответ

0

Вот класс документа для Flash, вы можете легко использовать его в Flex также, этот пример работает отлично и может дать вам направление в вашем проекте:

package 
{ 

import flash.data.SQLConnection; 
import flash.data.SQLMode; 
import flash.data.SQLStatement; 
import flash.display.MovieClip; 
import flash.filesystem.File; 

public class Main extends MovieClip 
{ 
    private var conn:SQLConnection; 

    public function Main() 
    { 
     createDatabase(); 
     insertMultipleData(); 
     showResult(); 
    } 

    private function createDatabase():void 
    { 
     var dbFile:File= File.applicationStorageDirectory.resolvePath("database.db"); 
     var createStmt:SQLStatement; 
     var sql:String ='CREATE TABLE "content" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"sometext" TEXT NOT NULL,"somenumber" NUMBER NOT NULL);'; 

     conn = new SQLConnection(); 
     conn.open(dbFile, SQLMode.CREATE); 

     createStmt = new SQLStatement(); 
     createStmt.sqlConnection = conn; 
     createStmt.text = sql; 
     createStmt.execute(); 
     createStmt = null; 
    } 

    private function insertMultipleData():void 
    { 

     var sql:String="INSERT INTO content (sometext , somenumber) VALUES (@sometext, @somenumber);" 
     var someData:Array = [{text: "text1", num: 1}, {text: "text2", num: 2}, {text: "text3", num: 3}, {text: "text4", num: 4}]; // just some data to insert in the database 

     var saveStmt:SQLStatement = new SQLStatement();   
     saveStmt.sqlConnection = conn;  

     conn.begin();   
     for (var i:int = 0; i < someData.length; i++) 
     { 
      saveStmt = new SQLStatement(); 

      saveStmt.sqlConnection = conn; 
      saveStmt.text = sql; 
      saveStmt.parameters["@sometext"] = someData[i].text; 
      saveStmt.parameters["@somenumber"] = someData[i].num; 
      saveStmt.execute(); 

     } 
     conn.commit(); 
     saveStmt.execute();   
     saveStmt = null; 
    } 

    private function showResult():void 
    { 
     var sql:String="SELECT * FROM content"; 

     var selectStmt:SQLStatement = new SQLStatement(); 
     selectStmt.sqlConnection = conn; 

     selectStmt.text = sql; 
     selectStmt.execute(); 

     var serverResult:Object = selectStmt.getResult().data;   
     for (var i:int = 0; i < serverResult.length; i++) 
     { 
      trace(serverResult[i].sometext, serverResult[i].somenumber) 
     } 
     selectStmt = null; 
    } 

} 

}

+0

эй @Sant gMirian не могли бы вы мне помочь .. у меня есть GetMyTasksNew1Result.token = ws.GetMyTasksNew1 (SignIn1Result2.lastResult [0] .UserId); эта функция вызова веб-сервиса, и я получаю результат в сетке данных DataProvider = «{GetMyTasksNew1Result.lastResult}» и мой вызов ответчик я хочу вставьте данные, используя для цикла. coz мой результат в GetMyTasksNew1Result.LastResult [i] как я могу вставлять данные в свою таблицу, используя для цикла coz У меня есть динамический массив, вы можете мне помочь PLZ .. я выложу свой Вопрос и ссылка здесь. Благодаря!! – TheDean

+0

http://stackoverflow.com/questions/23270092/how-to-insert-data-from-dynamic-array-to-sqlite-db-getting-from-webservice-using вот ссылка Не могли бы вы мне помочь. .. Благодаря – TheDean

Смежные вопросы