我正在尝试在.Net Standard 2.0项目中使用c#和microsoft.data.sqlite实现SQLite数据库。
当我调用connection.Open()时,我不断收到错误消息“找不到方法:'IntPtr SQLitePCL.sqlite3.get_ptr()'”。
我已经下载了以下Nuget软件包:
<ItemGroup>
<PackageReference Include="Microsoft.Data.SQLite" Version="2.2.6" />
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="2.2.6" />
<PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.0.0" />
<PackageReference Include="SQLitePCLRaw.core" Version="2.0.0" />
<PackageReference Include="SQLitePCLRaw.lib.e_sqlite3" Version="2.0.0" />
<PackageReference Include="SQLitePCLRaw.provider.e_sqlite3" Version="2.0.0" />
<PackageReference Include="SQLitePCLRaw.provider.e_sqlite3.netstandard11" Version="1.1.14" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我执行如下:
private static SqliteConnection _sqlConnection = new SqliteConnection(@"Data Source = myPath");
public static Int64 InsertTransaction(string stringToInsert)
{
SQLitePCL.Batteries_V2.Init();
StringBuilder sqlToExecute = new StringBuilder();
sqlToExecute.Append("INSERT INTO table");
sqlToExecute.Append("(columnName) ");
sqlToExecute.Append("VALUES(' " + stringToInsert+ "')");
using (SqliteConnection connection = _sqlConnection)
{
connection.Open();
SqliteTransaction transaction = connection.BeginTransaction();
SqliteCommand sqlCommand = new SqliteCommand(sqlToExecute.ToString(), connection, transaction);
sqlCommand.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
一切都建立了。在运行时,执行以下代码块时,我得到:“ Connection.Open();上找不到方法:'IntPtr SQLitePCL.sqlite3.get_ptr()'”
将 Microsoft.Data.Sqlite 和 Microsoft.Data.Sqlite.Core 包更新到 Entity Framework Core 版本 3.0.0 将解决该问题。请参阅我在Github上提出的类似问题。这是我的 package.config 参考:
<packages>
<package id="Microsoft.Data.Sqlite" version="3.0.0-preview9.19423.6" targetFramework="net461" />
<package id="Microsoft.Data.Sqlite.Core" version="3.0.0-preview9.19423.6" targetFramework="net461" />
<package id="SQLitePCLRaw.bundle_e_sqlite3" version="2.0.2-pre20190904113843" targetFramework="net461" />
<package id="SQLitePCLRaw.bundle_green" version="2.0.2-pre20190904113843" targetFramework="net461" />
<package id="SQLitePCLRaw.core" version="2.0.2-pre20190904113843" targetFramework="net461" />
<package id="SQLitePCLRaw.lib.e_sqlite3" version="2.0.2-pre20190904113843" targetFramework="net461" />
<package id="SQLitePCLRaw.provider.dynamic_cdecl" version="2.0.2-pre20190904113843" targetFramework="net461" />
<package id="System.Buffers" version="4.5.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.3" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.6.0-preview5.19224.8" targetFramework="net461" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0-preview9.19421.4" targetFramework="net461" />
</packages>
Run Code Online (Sandbox Code Playgroud)