How to use Sqlite for Xamarin.Android - xamarin.android

I am new to Sqlite. This what I understand so far.
Please help to confirm my understanding.
1) Sqlite engine is built into the Android-OS System
so, I dont need to download and install this Sqlite engine from its website.
Now, I have these questions :
2) If I include a Sqlite Database( With data in it) in the Project, Do I need to read ( use memorystream to read into a buffer, this is based on WP on SlqCe ) it INTO the folder or directory under the Sqlite engine?
3) Is there any tutorial on Create table, Add, Insert, update for Sqlite, setUp relationship
4) Is referential integrity supported? Like If I delete the Primary Key , all the Foreign Key will be deleted as well.
Thanks

One application which has helped me greatly in building SQLite Databases is this
SQLite Expert, http://www.sqliteexpert.com/ which is a standalone piece of sofware with a GUI which you can design the databases with and then produce the SQL code to produce the database.
The thing about setting up a Database is you need to create a class from the Android.Database.Sqlite.SQLiteOpenHelper object and override the OnCreate(SQLiteDatabase db) and OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) methods. It is then up to you to write your insert methods and so forth.
Good Luck,
James.

Refer this sample project : https://github.com/Vaikesh/Android-Quiz
I think you ca enforce referential integrity in SQLite with Triggers.
Tutorial on about SQLite : http://www.grokkingandroid.com/sqlite-in-android/

Related

Bind sqlite database with custom iOS framework

I have developed a custom ios framework for achieving some task, which is working perfectly but I have to add my sqlite database separately in my test app. I want to bind my sqlite database with my custom framework so that it will automatically added in any app where user want to user that framework.
I also don't want to show sqlite database to anyone. can anyone please tell me the best way to achieve this.
I believe you're looking to ship a sqlite database with your app, and have it installed invisibly to the user. Just add the database to your NSBundle, by including it in the application. The important part is that you must copy this bundled database to the file system (you probably want to also mark it as not being in the cloud), because the NSBundle'd files are read-only. So, here's your strategy: 1) on startup, check to see if the database is in the file system. 2) if not, copy it from the NSBundle to the file system, 3) open the database in the file system.
Maybe there is a better solution to your question but here is a suggestion on what you could: Programmatically create the database in your framework. As for hiding the database here is the solution to that! You may also encrypt the sqlite file.
Cheers

Core Data Encryption Class

I'm trying to use this wonderful git inside my xcode project:
https://github.com/project-imas/encrypted-core-data
It's fully functional when creating a new empty sqlite db.
But, how can I use an existing populated regular database?
I need to encrypt my sqlite file and use with the class provided from the git.
Thanks to all!
You need to use the SQLCipher convenience function sqlcipher_export. In particular, look at example number 1 for a plaintext migration.

How to get data from installed DB and insert the extracted data in New DB in iOS

I have a Database (used SQLite ) file that i copy in the documents while the applicaiotn is installed , now i have added one field in a Table and i want to install new DB in the Device. To achieve this i think i have to do Database Migration.
The issue i am facing is that I am not able to think the Code to get Whole Data from the installed Database and then insert that extracted data into New Database (while installation) , I have less experienced in iOS Programming so please Provide details from Scratch .
Thanks in Advance :)
This is not really an iOS issue, but a conceptional problem.
If you want to add new tables to the database, why do you copy an old version of the database rather than one that already contains the new tables?
As for the import of existing data, simply read out the old database and write it to the new database. This should be simple enough with the available SQLite API. Explaining the details would be beyond the scope of this question. (You will find enough info on these basic things online.)

SQLite database update when updating app via iTunes / AppStore

During an app update via the App Store I want to update the SQLite database file with more content.
The old SQLite file is in the Documents folder of my app.
How do I handle this?
I'm assuming you're not using Core Data or else you'd be using the auto-migration feature. For straight SQLLite you'll want to create a new database file. Then depending on the nature of your schema changes, you might be able to execute a query to copy the data over (using INSERT INTO destination SELECT * FROM source) . But if the changes are too much to handle with a simple set of queries, for example if it involves business logic, then you might need to write a script to convert the old data from one database to the new one.
sqlite> attach 'path_to_table.db3' as toMerge;
sqlite> insert into MyTableToInsertTo select * from toMerge.MyTableToInsertFrom;
sqlite> detach database toMerge;
use BEGIN; COMMIT; for large data
link

Reverse-engineering Core Data db results in "Can't find model for source store" error

I have the task to re-engineer an iPhone app which makes use of Core Data to store some values. Unfortunately I do not have access to the original source code but I do have acces to old database files, copied directly from the device where the old version of the app is installed.
I have to create a new version of the app with some new functionality and I am trying to import the data from the Sqlite Db and migrate it to a new version.
I am already failing at the task to read the data from the old database. Though I can open the Sqlite file and such was able to exactly reproduce the data structure in my own datamodel, everytime I try to read the data, it fails with a
Can't find model for source store
error.
Ignoring the old data is not an option because there is important data stored there.
I googled for solutions and tried every recommended solution related to migrating data but it all fails. Maybe I can not use the Sqlite created by another app? Or so I overlook something in re-engineering the structure of the datamodel even when I used exactly the some field names and datatypes? Is there another way around this?
I could not solve the issue but I found a workaround. By using Sqlite directly, I was able to query the legacy data and import it into my newly created data model. A good starter point for using Sqlite is here:
http://www.techotopia.com/index.php/IOS_4_iPhone_Database_Implementation_using_SQLite

Resources