Friday 20 December 2019

How do I check in SQLite whether a table exists?



How do I, reliably, check in SQLite, whether a particular user table exists?



I am not asking for unreliable ways like checking if a "select *" on the table returned an error or not (is this even a good idea?).



The reason is like this:



In my program, I need to create and then populate some tables if they do not exist already.




If they do already exist, I need to update some tables.



Should I take some other path instead to signal that the tables in question have already been created - say for example, by creating/putting/setting a certain flag in my program initialization/settings file on disk or something?



Or does my approach make sense?


Answer



I missed that FAQ entry.



Anyway, for future reference, the complete query is:




SELECT name FROM sqlite_master WHERE type='table' AND name='{table_name}';


Where {table_name} is the name of the table to check.



Documentation section for reference: Database File Format. 2.6. Storage Of The SQL Database Schema




  • This will return a list of tables with the name specified; that is, the cursor will have a count of 0 (does not exist) or a count of 1 (does exist)



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...