How to use SQLite3? - Printable Version +- Cuberite Forum (https://forum.cuberite.org) +-- Forum: Plugins (https://forum.cuberite.org/forum-1.html) +--- Forum: Plugin Discussion (https://forum.cuberite.org/forum-8.html) +--- Thread: How to use SQLite3? (/thread-1917.html) Pages:
1
2
|
How to use SQLite3? - Shadowraix - 05-08-2015 I want to use it to store data i'll be frequently accessing. I've tried looking at documentation, code, and the wiki. They all either give different or confusing examples. I've never actually had to code in any database format so sqlite is new to me. If anybody could help me out in understanding how to use it, or give very simplistic examples I would appreciate it. RE: How to use SQLite3? - xoft - 05-08-2015 You'll need at least a basic crash-course in general database design and SQL language, those are available all over the Net. Once you have an idea of how to structure your data tables, and how to query them for information and how to insert information into them, you'll be able to work with the API rather naturally. You basically use just 3 functions from the sqlite API - open(), close() and exec(). Open and close are easy - they just open and close the database files. Exec is where all the important stuff happens - it executes ANY sql code. Of course, in time you'll want to upgrade to using prepared statements. These are what most plugins nowadays use. Basically with statements you say "I want to execute this sql code several times, each time the same statement but with different data. And give me results one at a time". I'd recommend having a look at the Gallery plugin's Storage_SQLite file, it implements the entire SQLite storage mechanism for the Gallery plugin: https://github.com/mc-server/Gallery/blob/master/Storage_SQLite.lua A good example of working with the database is the RemoveArea() function: https://github.com/mc-server/Gallery/blob/master/Storage_SQLite.lua#L835-L871 It inserts data to one table and removes data from two other tables. The LoadAllPlayerAreas() function, on the other hand, queries the database for data in a basic way: https://github.com/mc-server/Gallery/blob/master/Storage_SQLite.lua#L835-L871 RE: How to use SQLite3? - Shadowraix - 05-10-2015 (05-08-2015, 05:15 PM)xoft Wrote: You'll need at least a basic crash-course in general database design and SQL language, those are available all over the Net. Once you have an idea of how to structure your data tables, and how to query them for information and how to insert information into them, you'll be able to work with the API rather naturally. You basically use just 3 functions from the sqlite API - open(), close() and exec(). Open and close are easy - they just open and close the database files. Exec is where all the important stuff happens - it executes ANY sql code. Alright, i'll give things a try. RE: How to use SQLite3? - Shadowraix - 05-10-2015 Alright, so I've started learning how SQLite3 works. I've been doing decent so far. I've got my table created and im already doing other stuff with it. One thing confuses me about the DB:exec() function that the documentation on the Lua SQLite3 page doesn't cover. What is udata? What does it represent as a parameter in the callback function? Also, the third parameter to the exec() function I have no idea what its for and I assume its related to udata. EDIT: I'm stupid, haha. udata is the third argument. "UserData" its to pass needed data into the callback I suppose. RE: How to use SQLite3? - xoft - 05-10-2015 See, told you it'd be easy I'd recommend this program for you: http://sqlitebrowser.org/ It allows you to view and edit sqlite database files. And you can even try out the sql queries there, to see what they return, and whether they work as you'd expect them to work. RE: How to use SQLite3? - Shadowraix - 05-10-2015 (05-10-2015, 03:59 PM)xoft Wrote: See, told you it'd be easy Already one step ahead of you, I found it and downloaded it before you suggested this. xP RE: How to use SQLite3? - LogicParrot - 05-10-2015 https://www.khanacademy.org/computing/hour-of-code/hour-of-sql/v/welcome-to-sql RE: How to use SQLite3? - NathanFlurry - 05-11-2015 @NiLSPACE's Login plugin ( https://github.com/NiLSPACE/Login ) has some *really* nice tools for managing a database. I *highly* suggest you check it out, especially if you don't have a solid understanding of SQL. (Be sure to include all the files beginning with "c" to make the library work.) RE: How to use SQLite3? - xoft - 05-11-2015 Well, I for one am not so thrilled about that framework of his, it's basically a ton of wrappers for a single SQL string and if you need to do something more advanced, there's no real way of doing it. RE: How to use SQLite3? - Aggroblut - 06-02-2015 Hey, I tested a little bit around but I dont understand why the following code wont work. The first query is working. The Table is created but the Insert dont work. But why? Can someone please tell me what I did wrong. PLUGIN = nil function Initialize(Plugin) Plugin:SetName("NewPlugin") Plugin:SetVersion(1) PLUGIN = Plugin LOG("Initialised " .. Plugin:GetName() .. " v." .. Plugin:GetVersion()) TestDB = {} TestDB = sqlite3.open('TestDB.sqlite3') local sql = "CREATE TABLE IF NOT EXISTS TestTable(ID PRIMARY KEY,One,Two)" TestDB:exec(sql) local sqlq = "INSERT INTO TestTable(ID,One,Two) VALUES ('25','35','45')" TestDB:exec(sqlq) TestDB:close() return true end function OnDisable() LOG(PLUGIN:GetName() .. " is shutting down...") endThanks a lot! Greetings Aggro |