これは、stackOverflow に関する私の最初の質問です。私はコロナで作業しており、SQLdb へのアクセスに問題があります (私は少し SQL 初心者です)。
データベースに保存した値にアクセスして返そうとしています。いくつかのコード サンプルを次に示します。
print("---------------- How I Create New Player Save Data")
local entry = [[CREATE TABLE IF NOT EXISTS playerData (key STRING PRIMARY KEY, content INTEGER);]]
db:exec(entry)
entry = [[INSERT INTO playerData VALUES ("LastLoginTime", 0);]]
db:exec( entry )
entry = [[INSERT INTO playerData VALUES ("Credits", 1000);]]
db:exec( entry )
entry = [[INSERT INTO playerData VALUES ("Level", 1);]]
db:exec( entry )
これで、この関数が機能し、データベース内のすべてが出力されます (「dbName」を渡します):
--print all the table contents
for row in db:nrows("SELECT * FROM "..dbName) do
local text = row.key..": "..row.content
end
これは機能しません。「0」を返します。
local grabCredits = "SELECT content FROM playerData WHERE key='Credits'"
local credits = db:exec(grabCredits)
print("-- value: "..credits)
これも「0」を返します。
local grabCredits = "SELECT key FROM playerData WHERE content>=10"
local credits = db:exec(grabCredits)
print("-- value: "..credits)
私が間違っていることを理解していません。たぶん、db で exec() 以外の別の関数呼び出しを使用する必要があります。単一のエントリにアクセスするたびにデータベースを反復処理できることはわかっていますが、それは非効率的です。
どんな助けでも大歓迎です。