-
Notifications
You must be signed in to change notification settings - Fork 150
FAQs
-
How do I create a blank SQLite database?
You can use something like the SQLite Manager extension for Firefox. Or, you can use any of the commonly available SQLite front end tools such as:
-
How about strings with single quotes in them, like
John's Name
? How can you insert them in to an SQLite database?Simply use the
parameters
parameter which is there for both thequery
andexecute
methods. Here's an example:let db = SQLiteDB.sharedInstance() let name = "John's Name" let sql = "SELECT * FROM clients WHERE name=?" db.query(sql, parameters:[name], completion:{ (data:[SQLRow]?)->Void in // Do something with the fetched data })
-
When I run a query, the results seem to be an array of
SQLRow
. How do I get at the actual data?As mentioned in the read me, an
SQLiteDB
query returns an array ofSQLRow
objects. EachSQLRow
object contains one or moreSQLColumn
objects for each column of data. You can access theSQLColumn
objects by subscripting theSQLRow
object based on the column name:db.query("SELECT * FROM products", completion:{ (arr:[SQLRow]?)->Void in let row = arr[0] let col = row["name"] })
But the above only returns an
SQLColumn
object in thecol
variable. How do you get aString
value? Or a value as some other data type likeInt
,Double
etc.?If you check the code for
SQLColumn
, you'll notice that it has built-in methods for returning the data as a specific type -asString
,asInt
,asDouble
,asData
, andasDate
. You can call these methods like this:let str = col?.asString()
The above returns the value of the
SQLColumn
object namedcol
as aString
.Note: The various data type methods for
SQLColumn
try their best to return the stored value as the specified type, even if the value was not stored in the database as that particular data type. As you can understand, all cross-type conversions will not work. So sometimes, you might receive an invalid value. So make sure to check your code when asking for a type other than how the data is stored in the database. -
When I build and run my project which uses SQLiteDB, I get an error in the console which says: "SQLiteDB - failed to copy writable version of DB!". Or, I get an alert in the application which says: "failed to prepare SQL: Error: out of memory". What's wrong?
That error message is usually an indication that you didn't include an SQLite file with the appropriate name (
data.db
, as mentioned in the documentation) in your project, or, that you did include an SQLite file but it was not set to be copied to the device as part of a project target by assigning a project target to the database file as mentioned in the read me. -
I used SQLiteDB before but after an update I get an error saying "
String
does not have a memberpositionOf
" - what's wrong?Originally, some additional
String
methods were provided as part of theSQLiteDB.swift
file. They have now been moved to their own separateString-Extras.swift
file. When new files are added to the source, remember to add them to your own project as well. If you only use the original files, you will get errors. -
Will SQLiteDB work under OS X?
As of the 25th of September 2014, it mostly should. I do not use SQLiteDB myself under OS X and so the changes are experimental at the moment. They might also require some additional code changes/updates on your part to get it working correctly.
Do note that I will not be updating the code to fix new bugs due to changes to the Swift language as quickly as I do with iOS, for OS X compatibility.
-
Can you explain the Swift functionality/code that you've used in SQLiteDB?
I released SQLiteDB so that it can be of use to others who are facing the same issues in interfacing with SQLite databases using Swift. But unfortunately, I do not have the time to explain Swift functionality to you. Please go through the relevant Apple documentation such as this.
-
I'm using Xcode 6 beta 3 (or beta 2, or any beta which is older than the latest release) and my project will not compile with SQLiteDB. What's wrong?
I usually update SQLiteDB to the latest Xcode beta version within a day or so of the new beta being released. So if you are on an older version of Xcode 6 beta, your code may not work until you upgrade to the latest version. Or, you can go through the commit notes to see which version supports your version of Xcode and use the code from that particular commit.
-
Nothing's working after upgrading to the latest Xcode 6 beta! What do I do?
Since Swift is still heavily under development by Apple, things will change and this can result in things breaking. I will be fixing SQLiteDB to comply with the latest Apple changes as soon as I can. So first check if I've actually pushed in some changes since the last time first :)
If I haven't fixed the issues yet, please be patient. I'll fix them as soon as I can.