Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLite Xamarin.在Android上形成PCL错误_C#_Android_Sqlite_Xamarin_Cross Platform - Fatal编程技术网

C# SQLite Xamarin.在Android上形成PCL错误

C# SQLite Xamarin.在Android上形成PCL错误,c#,android,sqlite,xamarin,cross-platform,C#,Android,Sqlite,Xamarin,Cross Platform,我正试图在pcl项目中的xamarin(C#)上构建一个sqlite数据库。我正在学习教程。在Android实现(步骤5)中,我得到以下错误: 错误CS0104“Environment”是“Android.OS.Environment”和“System.Environment”AlarmSQLite.Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.c

我正试图在pcl项目中的xamarin(C#)上构建一个sqlite数据库。我正在学习教程。在Android实现(步骤5)中,我得到以下错误:

错误CS0104“Environment”是“Android.OS.Environment”和“System.Environment”AlarmSQLite.Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.cs 30 Active

错误CS0234命名空间“SQLite”(是否缺少程序集引用?)AlarmSQLite中不存在类型或命名空间名称“Net”。Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.cs 33处于活动状态

我使用VisualStudio2017。我试图删除.Net并添加System.Environment,但出现了更多新错误。 我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using SQLite;
using Xamarin.Forms;
using AlarmSQLite.Droid;
using System.IO;

[assembly: Dependency(typeof(SQLite_Android))]

namespace AlarmSQLite.Droid
{
public class SQLite_Android : ISQLite
{
    public SQLite_Android() { }



    public SQLite.SQLiteConnection GetConnection()
    {
        var dbName = "AlarmDB.db3";
        var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentsPath, dbName);

        var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
        var connection = new SQLite.Net.SQLiteConnection(platform, path);

        return connection;
    }

}
}
教程中的所有内容都是一样的。我做错了什么?谢谢大家!

新错误:

错误CS0234命名空间“SQLite”(是否缺少程序集引用?)AlarmSQLite中不存在类型或命名空间名称“Platform”。Android C:\Users\Thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\U Android.cs 33处于活动状态


错误CS0029无法将类型“SQLite.Net.SQLiteConnection”隐式转换为“SQLite.SQLiteConnection”AlarmSQLite.Android C:\Users\Thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite\u Android.cs 36 Active

错误CS0104: 环境源于“Android.OS.Environment”和“System.Environment”,所以会给您带来一些不确定性问题。只需将系统预先安装到环境中即可

var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
错误CS0234:似乎您尚未添加Nuget软件包。您必须将其添加到PCL以及Android项目中,然后再次构建项目

错误CS0234&CS0029:请确保在android和pcl项目中添加了以下两个nuget软件包


然后,不要使用Sqlite,而是尝试使用Sqlite.Net

您的最终代码应该如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using AlarmSQLite.Droid;
using System.IO;
using SQLite.Net;
using SQLite.Net.Async;

[assembly: Dependency(typeof(SQLite_Android))]

namespace AlarmSQLite.Droid
{
public class SQLite_Android : ISQLite
{
    public SQLite_Android() { }



    public SQLiteConnection GetConnection()
    {
        var dbName = "AlarmDB.db3";
        var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentsPath, dbName);

        var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
        var connection = new SQLiteConnection(platform, path);

        return connection;
    }

}
}
别忘了调整你的界面。应该是这样的:

SQLiteConnection GetConnection():

注意:如果不需要Sqlite.Net.Async PCL引用,可以省略它。

错误已解决,但我得到了新的错误。平台(与.Net错误相同),并且在返回连接时,方法必须是.Net。但是当我这样做的时候,我的界面出现了问题,使得connectionI在你的帖子中只能看到两个错误。请提及这些新错误。我更新了我的答案。您使用的是“SQLite”引用而不是“SQLite.Net”。