我有一个Xamarin Forms应用程序,在Android上运行良好,但当我在iOS上运行时,当我设置数据库时,我得到了这个错误。
Method not found: string SQLitePCL.raw.sqlite3_column_name(SQLitePCL.sqlite3_stmt,int)
然后当我试图插入到数据库表中时
Method not found: string SQLitePCL.raw.sqlite3_errmsg(SQLitePCL.sqlite3)
应用程序使用mvvmlight,我在那里安装了sqline-net-pcl包,也在平台代码中安装了。版本都是匹配的。
我的sqlite的iOS初始化代码是这样的(在平台上)
public class SQLiteConnectionFactory : ISqliteConnectionFactory
{
readonly string Filename = "mydb";
public SQLiteConnection GetConnection()
{
var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
path = Path.Combine(path, Filename);
SimpleIoc.Default.Register<ISqliteConnectionFactory, SQLiteConnectionFactory>();
return new SQLiteConnection(path, SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.SharedCache);
}
并插入代码(在mvvmlight项目中),像这样
public void SaveListData<T>(List<T> toStore)
{
try
{
lock (dbLock)
{
connection.InsertAll(toStore);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
我在Xam.Android和sqlite-net-pcl上遇到过问题,但在iOS上从未遇到过。
我安装了sqlite-net-pcl 1.7.302-beta和SQLitePCL.* 2.0.2包(使用测试版是为了防止稳定版的一些链接问题)。
下面是安装iOS包的照片
把你的sqlite-net-pcl包降级到1.5.231版本,这对我来说是个好办法