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