in my SQLite.dll library program.

On Tue, Feb 21, 2017 at 2:42 PM, Clyde Eisenbeis <[email protected]> wrote:
> I don't recall how I obtained the SQLite files ... was two years ago.
>
> When I have SQLite installed on my genealogy program and on my SQLite
> .dll library, it works fine.
>
> When I don't have SQLite installed on my genealogy program, I get an
> exception "Unable to load DLL 'SQLite.Interop.dll': ... " with
>
>   sqliteConn = new System.Data.SQLite.SQLiteConnection("Data Source="
> + stPathFilename + ";").
>
> On Tue, Feb 21, 2017 at 12:26 PM, Barry <[email protected]> wrote:
>> Are you using NuGet or downloading the binaries from System.Data.Sqlite.org?
>>
>> Ah. You'll have to excuse me, it's been a while since I actually started a
>> new project and set SQLite as a dependency. I'm not sure if things have
>> changed, or if my memory is terrible, but what I said may not have been
>> completely clear or correct.
>>
>> If you're using NuGet (the easiest way):
>>  Turns out there's a NuGet package called System.Data.Sqlite.Core* that
>> includes only the core SQLite wrapper. If you install System.Data.Sqlite
>> you get the LINQ and EF stuff (which I generally try to stay away from). If
>> you use this package you will get both the x64 and x86 interop binaries in
>> their respective folders. If you have already installed the
>> System.Data.Sqlite package, and got the LINQ and EF dependencies, you
>> should be able to remove them as a dependency by right clicking the the
>> unnecessary dependencies to open their context menu, and selecting "Remove".
>>
>> If you're downloading from the website System.Data.Sqlite.org:
>>  You only get an x86 or a x64 version of the interop binaries, depending on
>> what you download. The download page has some instructions on how you can
>> make the wrapper library automatically select the correct interop dll for
>> whichever architecture you're targetting. See the section entitled "Native
>> Library pre-loading". I haven't gone through this setup personally so
>> cannot help you any more than what is there on the site (The NuGet package
>> comes with this preconfigured). You can choose to download the mixed mode
>> assemblies which will not have the 'interop' DLLs. I haven't played around
>> with these because the download page specifically advises to avoid these
>> packages unless you need to put SQLite in the Global Assembly Cache (which
>> the authors also recommend against). Note that if you download from the
>> website, you'll get the LINQ and EF6 dlls included in the zip file. If you
>> never reference them from your project, they won't be copied to your output
>> directory and you can ignore them.
>>
>> Hope this helps. I am by no means an expert, I've only messed with it a few
>> times. I hope that if I have got things wrong that someone more experienced
>> can jump in and correct my mistakes.
>>
>> * This name might be a little confusing since Microsoft have recently
>> release an unrelated product called Entity Framework Core. It appears
>> unrelated to System.Data.Sqlite.Core.
>>
>> On 21 February 2017 at 13:48, Clyde Eisenbeis <[email protected]> wrote:
>>
>>> Thanks for the good info!
>>>
>>> I can't find SQLite.Interop.dll ... is referenced at
>>> https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki,
>>> but don't see a download.
>>>
>>> On Mon, Feb 20, 2017 at 12:30 PM, Barry Smith <[email protected]>
>>> wrote:
>>> > I would use system.data.sqlite in that situation.
>>> >
>>> > But I would also say it depends on what you already have written, and
>>> what your strengths are. I am under the impression from your first email
>>> that you already have something written using system.data.sqlite. i.e.
>>> Using the class System.Data.SQLite.SQLiteConnection to create a
>>> connection to the db, then using the methods of that to manipulate the db
>>> or extract data from it. Have I assumed wrong?
>>> >
>>> > If I am wrong, and you have yet to start writing anything, I would still
>>> recommend using system.data.sqlite. Only if you particularly like LINQ over
>>> SQL and you are prepared to learn the caveats of the entity framework would
>>> I recommend that.
>>> >
>>> > Note that if you're using system.data.sqlite you will ultimately produce
>>> a few dlls that must be distributed together:
>>> >  - your custom library, which contains the code you've written
>>> >  - System.Data.Sqlite.dll, which contains the wrapper to make an
>>> interface to access SQLite in a more dotNet friendly manner
>>> >  - x64\sqlite.interop.dll
>>> >  - x86\sqlite.interop.dll
>>> > The last two contain the 'raw' SQLite library (for either 32 or 64 bit
>>> systems).
>>> >
>>> > You should not need the other libraries for a simple application. If you
>>> find that visual studio is placing them in your project's output directory,
>>> check if they are listed as a reference and try to remove them then
>>> recompile.
>>> >
>>> >> On 20 Feb 2017, at 1:05 PM, Clyde Eisenbeis <[email protected]> wrote:
>>> >>
>>> >> Thanks for the clarification.  In my case:
>>> >>
>>> >> 1) Speed is not an issue.  Size is not an issue.
>>> >>
>>> >> 2) This is a personal use database (genealogy).
>>> >>
>>> >> 3) Typically I create .dll's that serve as a library (WPF Custom
>>> >> Control Library) ... easy to use for different programs.
>>> >>
>>> >> 4) For example, I have an Excel .dll library (uses Excel as a
>>> >> database).  When the program runs the first time using this .dll
>>> >> library, it creates the Excel file along with multiple sheets.
>>> >>
>>> >> 5) I'd like to create a similar .dll for an SQLite library.  The
>>> >> program that uses this .dll is a simple WPF program that uses the .dll
>>> >> class name to access the functions.
>>> >>
>>> >> With this info, which option would you recommend?
>>> >>
>>> >>> On Sun, Feb 19, 2017 at 9:45 PM, Barry Smith <[email protected]>
>>> wrote:
>>> >>> Strange, I replied to this earlier... Perhaps my messages are not
>>> getting through.
>>> >>>
>>> >>> You cannot include a .c file for compilation in a c# project. You'd
>>> have to do use a separate DLL and do some pinvoke stuff to get to the raw
>>> SQLite interface, but in my opinion you're better off using the
>>> system.data.sqlite wrapper. If you need the speed and power of the raw
>>> interface, you probably need to drop out of an interpreted and managed
>>> language (c#) too...
>>> >>>
>>> >>> You don't need the entity framework (EF) to run system.data.sqlite.
>>> That is an object relational mapper (ORM) that uses a lot of fancy
>>> reflection to make data access a little easier* (until you get stung by it)
>>> and a lot slower. EF is developed my Microsoft, although SQLite must
>>> provide some input to make it work with its syntax. You should be able to
>>> remove the entity framework dependencies from your project and still
>>> compile with no issues. Try a complete rebuild / clean compile to try get
>>> rid of the unnecessary dlls.
>>> >>>
>>> >>> *whether an ORM actually makes data access easier is debatable, they
>>> basically allow you to write your data access queries in LINQ rather than
>>> SQL, and automatically instansiate c# objects for each line in the results.
>>> I find SQL easier...
>>> >>>
>>> >>>> On 19 Feb 2017, at 1:50 PM, Clyde Eisenbeis <[email protected]> wrote:
>>> >>>>
>>> >>>> Sorry for the slow response.
>>> >>>>
>>> >>>> My code is in C#.  I don't know if the amalgamation source code in C
>>> >>>> can be compiled so it is compatible with C#.
>>> >>>>
>>> >>>> If it can, I'd be interested in details.  Thanks!
>>> >>>>
>>> >>>>> On Sat, Feb 18, 2017 at 1:29 AM, R Smith <[email protected]> wrote:
>>> >>>>>
>>> >>>>>
>>> >>>>>>> On 2017/02/18 12:45 AM, Warren Young wrote:
>>> >>>>>>>
>>> >>>>>>> On Feb 17, 2017, at 7:32 AM, R Smith <[email protected]> wrote:
>>> >>>>>>>
>>> >>>>>>> You can even checkout the latest commits via SVN
>>> >>>>>>
>>> >>>>>> There’s a Subversion mirror of the official Fossil code repository
>>> for
>>> >>>>>> SQLite?
>>> >>>>>
>>> >>>>>
>>> >>>>> Apologies, force of habit nomenclature. Have fallen to calling any
>>> Software
>>> >>>>> Versioning system just 'SVN' for short. I did of course mean for it
>>> to be
>>> >>>>> checked out via Fossil.
>>> >>>>>
>>> >>>>>>    https://goo.gl/KzLcV8
>>> >>>>>>
>>> >>>>>> (Excuse the shortener, it’s a reeeealy long URL.)
>>> >>>>>>
>>> >>>>>> I could give you that Zip file link, but I suspect it’s purposely
>>> not
>>> >>>>>> being published to avoid load on the SQLite repository server
>>> caused by bots
>>> >>>>>> repeatedly requesting Zip files and tarballs.
>>> >>>>>
>>> >>>>>
>>> >>>>> The bots can read goo links nowadays. ;)
>>> >>>>>
>>> >>>>>> Using Fossil is far more efficient than downloading Zip archives,
>>> but as I
>>> >>>>>> keep getting reminded in my own Fossil-hosted public project, some
>>> people
>>> >>>>>> just refuse to install and use anything they don’t absolutely have
>>> to.  It’s
>>> >>>>>> six easy steps, but apparently that’s too many for some.
>>> >>>>>
>>> >>>>>
>>> >>>>> Agreed, and what is more sad is that Fossil is so much better at
>>> actual
>>> >>>>> "Version-Control" (as opposed to making sharing code easiest). If we
>>> could
>>> >>>>> get the rest of the World to rather Fossil, everybody wins. (I can
>>> already
>>> >>>>> hear Linus clutching his chest and breathing erratically!)
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>> _______________________________________________
>>> >>>>> sqlite-users mailing list
>>> >>>>> [email protected]
>>> >>>>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>> >>>> _______________________________________________
>>> >>>> sqlite-users mailing list
>>> >>>> [email protected]
>>> >>>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>> >>> _______________________________________________
>>> >>> sqlite-users mailing list
>>> >>> [email protected]
>>> >>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>> >> _______________________________________________
>>> >> sqlite-users mailing list
>>> >> [email protected]
>>> >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>> > _______________________________________________
>>> > sqlite-users mailing list
>>> > [email protected]
>>> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>> _______________________________________________
>>> sqlite-users mailing list
>>> [email protected]
>>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>>
>> _______________________________________________
>> sqlite-users mailing list
>> [email protected]
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to