0

一部のデータをテーブルに保存しようとしています。データベースからデータを取得し、正常に動作します。私の問題は、データがテーブルに保存されていないことです。これは table = {} のような lua テーブルであり、データベース テーブルではありません。

保存されているのかもしれませんが、後で呼び出しても、保存前に印刷が完了しているように見えます。実際、最初に呼び出したにもかかわらず、ネットワーク要求がプログラムの最後に行われたようです。

この理由を知りたいです。何か案は?

コードは次のとおりです。

---TESTING!

print("Begin teting!")

--hej = require ( "test2" )

local navTable = {
    Eng_Spd = 0,
    Spd_Set = 0
}

local changeTab = function()
    navTable.Eng_Spd = 2
end

printNavTable = function()
    print("navTable innehåller: ")
    print(navTable.Eng_Spd)
    print(navTable.Spd_Set)
end 


require "sqlite3"
local myNewData 
local json = require ("json")
local decodedData



local SaveData2 = function()
    local i = 1
    local counter = 1
    local index = "livedata"..counter
    local navValue = decodedData[index]
    print(navValue)

    while (navValue ~=nil) do
        --tablefill ="INSERT INTO navaltable VALUES (NULL,'" .. navValue[1] .. "','" .. navValue[3] .."','" .. navValue[4] .."','" .. navValue[5] .."','" .. navValue[6] .."');"
        --print(tablefill)
        --db:exec(tablefill)
        if     navValue[3] == "Eng Spd" then navTable.Eng_Spd = navValue[4]
        elseif navValue[3] == "Spd Set" then navTable.Spd_Set = navValue[4]     
        else print("blah")
        end
        print(navTable.Eng_Spd)
        print(navTable.Spd_Set)
        counter=counter+1
            index = "livedata"..counter
                navValue = decodedData[index]           

    end 
end

local function networkListener( event )
    if (event.isError) then
            print("Network error!")
    else
            myNewData = event.response
            print("From server: "..myNewData)
            decodedData = (json.decode(myNewData))
    SaveData2()
    --db:exec("DROP TABLE IN EXISTS navaltable")
    end
end

--function uppdateNavalTable()
    network.request( "http://127.0.0.1/firstMidle.php", "GET", networkListener )

--end
changeTab()
printNavTable()
--uppdateNavalTable()
printNavTable()

print("Done!")

出力は次のとおりです。

Copyright (C) 2009-2012  C o r o n a   L a b s   I n c .
        Version: 2.0.0
        Build: 2012.971
Begin teting!
navTable innehåller:
2
0
navTable innehåller:
2
0
Done!
From server: {"livedata1":["1","0","Eng Spd","30","0","2013-03-15 11:35:48"],"li
vedata2":["1","1","Spd Set","13","0","2013-03-15 11:35:37"]}
table: 008B5018
30
0
30
13

ところで、navTable innehöller は、navTable が含まれていることを意味します。

4

1 に答える 1

1

答えは、networklistener が残りのコードと並行して実行されることです。

于 2013-05-29T08:40:16.740 に答える