Linq + SQLite + Take() == Problem - c#

I'm using System.Data.SQLite to access a SQLite database via c#/linq. I had no problems until I tried to use the Take()/Skip() functionality which caused an exception. The error message in case of Take() is "SQLite error near ".": syntax error".
Any ideas what I could do to get around this?

perhaps you need DBLinq http://code.google.com/p/dblinq2007/

I've had the same issue using VS2008 SP1, System.Data.Sqlite.Linq v2.0.38.0 and System.Data.Sqlite v1.0.66.0.
Solved a similar error (with LINQ's Skip) uncommenting DbProviderFactories section in app.config, don't ask me why it works.
That section shows this way:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
(I'm working with and old VS2008 project after an OS reinstall and I had to reinstall all dependencies, I think I've not installed the same exact Sqlite versions I had. It always worked with that app.config's section commented)

Related

How to set SQLite database file to a binding source? (VS 2017/2019/2022) [duplicate]

I thought that sqlite was simple but it is giving me a hard time. I just want to create an application where I can connect to a sqlite database using the ado.net entity data classes.
I am having this problem when testing the application on a virtual computer running windows xp. the application works fine on my current computer and also on my laptop when I deploy them.
Here is what happens on the virtual computer :
The application is able to launch.
The application is able to interact with the database using System.Data.SQLite
The application is not able to connect to the database using The ADO.NET Entity data models
when I try to connect I get the following exception:
I know there are a lot of post that talk about this and most of them say that you need to download the .NET provider for Sqlite.
I have already installed the sqlite-netFx40-setup-bundle-x86-2010-1.0.79.0.exe and I get the same problem. What should I do?
Edit
I managed to establish a connection by adding:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
to my app.config file.
The problem is that now I cannot select data nor insert records to the database. The exception that I get when I try to insert a new record now is:
A null was returned after calling the 'GetService' method on a store provider instance of type 'System.Data.SQLite.SQLiteFactory'. The store provider might not be functioning correctly.
had to add:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
to my app config file. and it now looks like:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>
In the location where sqlite was installed I had to copy
to my output directory where my program exe is located
Install SQLite Toolbox through extensions
Download the latest setup file sqlite-netFx46-setup-bundle-x86-2015-1.0.xxx.0.exe
Install the correct x86 installation, installing VS designer components is a option in the MSI, there is bold text detailing this underneath the correct installation.
Restart and check SQLite in GAC was installed correctly by clicking the blue question mark above your connected databases underneath SQLite toolbox.
At this point you should see "SQLite EF6 DbProvider in GAC - Yes."
Elsewise, you most likely configured your machine.config manually in the past. Delete the changes you made underneath system.data > DbProviderFactories.
Restart VS and you should see "SQLite EF6 DbProvider in GAC - Yes."
Install System.Data.SQLite under the NuGet manager.
You can now connect to SQLite as a binding source and directly select your database file through "SQLite Database" vs "SQLite Provider (Simple for EF6 by ErikEJ)."
refer to this link, this solution was taken from a detailed github post, step by step

Exception occurrs while opening winforms C#.net

I've developed a windows application in C#.net and entity framework and database is oracle. I've successfully deployed this application on server machine and application works fine.
When this application is access on client machine then the connection to db is working but when trying to open the form it throws exception-
"The specified store provider cannot be found in the configuration, or is not valid".
I am using oracle XE and entity frame work 6.0
Can anyone please help me to solve this issue.
Your project does not seem to know about the provider you are trying to create. You need to add it to your project's app.config file.
For example, here's one for MySQL:
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</DbProviderFactories>
</system.data>
Just change the details to suit the Oracle provider you are using. I'm not familiar enough to give a more specific example.

Postgresql with EF6 creation of ddex is failed

I'm trying to to work with Entity Framework 6, and connect it to a Postgresql
database.
I'm using npgsql.Entityframework, but get an error when creating the ddex file.
Can someone knows why?
Thanks.
Install Npgsql, to work between Entity Framework to PostgreSql:
Download and install the Setup_NpgsqlDdexProvider.exe from https://github.com/npgsql/npgsql/releases.
Open Visual-Studio, click on the tab: TOOLS -> Setup Npgsql DbProviderFactories.
A window will open, you need to click OK.
Close Visual-Studio and open as administrator the two machine.config files of .NET with notepad.
There are two file that we need to edit, you can find the file at the paths:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
Add the flowing element to the files:
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql"/>
<add name="Npgsql Data Provider"
invariant="Npgsql"
description=".Net Data Provider for PostgreSQL"
type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
support="FF" />
</DbProviderFactories>
</system.data>
Reopen Visual-Studio at the wanted project.
Install Entity Framework through Nuget.
Open the Package Manager Console and insert the commend:
Install-Package EntityFramework6.Npgsql
Check that the wanted DLL are references, like so:
If not add the DLL manually. The sopose to be at the paths:
C:\Users\YOURCOMPUTERNAME\documents\visual studio 2015\Projects\PostgreSqlVsEfwDemo\packages\Npgsql.3.0.5\lib\net45\Npgsql.dll
C:\Users\ YOURCOMPUTERNAME\documents\visual studio 2015\Projects\PostgreSqlVsEfwDemo\packages\EntityFramework6.Npgsql.3.0.5\lib\net45\EntityFramework6.Npgsql.dll
Open the App.config\Web.config and add two elements:
The provider element at entityFramework -> providers. as so:
The provider element at DbProviderFactories. as so:
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql" />
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" support="FF" />
</DbProviderFactories>
If the <system.data> element isn't exist, add it all.
Now lets add Entity Data Model like so:
Select "EF Designer from database"
Click on "New Connection"
Choose the "PostgreSQL Database" as the Data source:
Filled the fields:
HOST
USERNAME
PASSWORD
PORT
DATABASE (fill this field last.)
Click on "Test Connection" to see if it works.
Continue with Entity Framework as regular.
Hope it's help you.
This document of Npgsql Docs really helped me, but still have problems.

SQLite error : Failed to find or load the registered .Net Framework Data Provider

I am using SQLite in my Winforms application. I am copying System.Data.SQLite.dll and System.Data.SQLite.Linq.dll in output directory.
App.config
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
The application is throwing "Failed to find or load the registered .Net Framework Data Provider" error in some client's machines.
Please suggest me what should i do to fix this.
System.Data.SQLite.dll completely depends on native library - 'sqlite3.dll'. So, you should install proper package on each machine, either x32 version or x64, and create two builds of the application - for x32 architecture and x64.
You can find more information about package types and its dependencies here in the Package Types section.

SQLite basic example

I am trying to create a database with SQLite with c# then create a table insert data then close the connection. I have just downloaded System.Data.SQLite.dll lybrary and I am not sure how to use it. There are a lot of examples in the internet but all of them seem to have a database already. Or maybe I am doing something wrong.
It will be nice If I can have a short example to just create a database, table and basic query.
EDIT
I have tried the examples provided by the comments but I don't understand why I do get errors. Maybe I downloaded the wrong library?
The error was because I was using .NET Framework 4.0 . I downgraded to 2.0 and it worked. Sorry for the question. It will be nice to use it with .NET Framework 4.0 though.
Edit:
It actually works with .NET Framework 4.0 I had to add this lines of code to my app.config file:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
also if you plan to use ado.net in your solution I experience a lot of problems when deploying. Everything worked great under development. If you use ado.net and you plan on deploying your app then include also:
<!--Sqlite configuration so that it works with ado.net-->
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
if you include that last part in your app.config file then you will have to make sure that:
those dll's have to be in your output directory.
if you deploy make sure that you copy those files to the working directory
shouldnt it be {"FailIfMissing", "False"} instead of {"FailIfMissing=False", "False"} ?
Please change the Platform Target for your C# project to Project Settings > Build > Platform Target: Any CPU.
I had a similar error occurred when i tried to run in a x64 machine with SQLite x64 binaries. But worked fine after these settings were changed

Categories