Hi,

On Tue, Oct 23, 2012 at 3:10 PM, Simon Slavin <slav...@bigfraud.org> wrote:
>
> On 23 Oct 2012, at 10:35pm, Igor Korot <ikoro...@gmail.com> wrote:
>
>> On Tue, Oct 23, 2012 at 2:26 PM, Doug Currie <doug.cur...@gmail.com> wrote:
>>>
>>> On Oct 23, 2012, at 4:58 PM, Igor Korot <ikoro...@gmail.com> wrote:
>>>
>>>> 1. I know on Mac I need to build an application bundle. Where do I
>>>> store the .db file relative to the bundle?
>>>> Inside it? Home directory? Somewhere on the hard drive? What is the
>>>> usual place for it?
>>>
>>> If the database is read-only, you can sore it inside the bundle.
>>
>> Nope. There will be new records insertion/old record update/delete.
>>
>>> If it is application configuration, you should store it in the 
>>> application's directory in the user's ~/Library/Application 
>>> Support/<application name>
>>
>> Nope. It is for an application data.
>>
>>> If the database is a document, you should store it wherever the use directs 
>>> via a file dialog.
>>
>> So then user home directory (~) should be fine, right?
>
> No.  Never put anything in the home directory.  That's just for other things 
> Apple has already put in there.  Most user's don't realise they have a home 
> directory and will arbitrarily delete things they find there: "I don't know 
> what this is for and I don't care about it.".

OK.
>
> If your user considers these SQLite databases to be their own documents (i.e. 
> like a word processor saves text documents, your application saves SQLite 
> databases) then you must use Apple's standard 'Save' and 'Open' APIs to allow 
> the user to decide where the files go.  This gives the user all the 
> facilities they're used to, like drag-and-drop and automatically picking the 
> most recently used directory.  Most users will chose to keep their documents 
> on the desktop or in their own Documents folder, but will regard any 
> application which doesn't give them the ability to choose as weird and broken 
> and will not use it.  If one of these files disappears between runs of your 
> program then the application just considers that saved document to have been 
> deleted.

Well, that the closest definition of the data I'm about to put into
this database.
I am making a sport related application and need to store the data
about the teams, players etc.
User should be able to add/edit/delete this information and this
information will be presented
in the GUI.
Now the application is not creating the database - I am. The
application/user is just uses the data
in it.
So on the first start there should be records in the db already.

However, from you response I gather I will need an application
installer which will ask the user "Where
do you want to store the database with the data?" Am I correct?
If yes, what I can use in order to create such distribution package? I
presume it should be something
like XCode installer, which asks couple of questions first and then
copy everything.
If no, then could you clarify, please.

Thank you.

>
> If your SQLite database is used to support the inner workings of your 
> application that the user knows nothing about and never has to manipulate 
> themself (e.g. a web browser might keep an internal database of DNS 
> addresses) then there are two possibilities.  If you only need one of these 
> files, no matter which user is using your app, then it belongs in 
> "/Library/Application Support/<application name>".  If each user needs their 
> own file then it belongs in "~/Library/Application Support/<application 
> name>" as Doug wrote.  Apple provides an API which will provide the correct 
> pathname for you, as Petite wrote.  You would never have to know the above 
> path yourself unless you're writing in a language which cannot access Apple's 
> standard API.  If one of these documents disappears between runs of your 
> program then your application must be able to recover from this situation 
> itself, perhaps by creating a new empty database or by duplicating a copy 
> from its application bundle.
>
> If your SQLite database is used to store the user's own preferences about how 
> the application should work which change with the user's own preferences, 
> then the file should be stored in the user's Preferences folder.  Again, 
> Apple provides an API which will produce the right path for you, and you 
> should never generate it yourself.  However storing preferences in a SQLite 
> database is non-standard: Apple already provides a standard mechanism for 
> storing user preferences.  If one of these documents disappears between runs 
> of your program then your application must be able to recover from this 
> situation itself, perhaps by creating a new empty database or by duplicating 
> a copy from its application bundle.
>
> All of the above is second-nature to any Macintosh programmer.  They don't 
> even have to think about this stuff, just like a Windows programmer expects 
> to see their application show up in the Start menu and on the Taskbar.  It 
> may be that you should talk to an experienced Mac programmer before porting 
> your application across so you do this and other things in the way a Mac user 
> would expect.
>
>>> SQLite itself doesn't care where the database is stored as long as the 
>>> directory it is in is read/write.
>>>
>>>> 2. When I done on Windows I should be able to just copy the file and
>>>> drop it on the Mac HD, right?
>>>
>>> Yes.
>>
>> Good.
>
> Right.  SQLite database file format is cross-platform.  If you have one that 
> works on one platform, you can just copy it over and it'll work.
>
> Simon.
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to