SQLite方法未找到:'IntPtr SQLitePCL.sqlite3.get_ptr()'。

5

我正在尝试在 .Net Standard 2.0 项目中使用 c# 和 microsoft.data.sqlite 实现 SQLite 数据库。

当我调用 connection.Open() 时,出现了“Method not found: 'IntPtr SQLitePCL.sqlite3.get_ptr()'”错误。

我已经下载了以下 Nuget Packages:

<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>

我按以下方式执行它:
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();
            }
        }

所有的东西都在构建中。在运行时,当以下代码块执行时,我会得到:"Method not found: 'IntPtr SQLitePCL.sqlite3.get_ptr()'",它位于 Connection.Open();


这不会解决你当前的问题,但我建议阅读一下 https://dev59.com/BmYq5IYBdhLWcg3wkRco 。 - mjwills
另外,根据您目前的代码,我建议不要使用 StringBuilder - 它并没有为您带来太多价值(因为绝大部分字符串都是硬编码的)。 - mjwills
@mjwills - 这是一个很好的链接可以分享... 我其实对 SQL 注入攻击比较熟悉... 我只是为了让例子简洁明了而进行了简化。同样地,我正在使用 StringBuilder,因为我实际上正在遍历参数... - David Mitchell
我遇到了完全相同的问题,这让我感到非常疯狂。整个程序在几天前还能完美运行,到底发生了什么事情?! - Crono
1个回答

4

将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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接