Kürzlich begann ich Android-Anwendungen mit Xamarin zu erstellen. Ich versuche eine kleine lokale Datenbank mit SQLite zu erstellen. Ich habe das folgende Tutorial von Xamarin documentation website verwendet.Operator '! =' Kann nicht auf Operanden vom Typ 'Task' und 'int' angewendet werden
Leider bekomme ich einen Fehler:
Error CS0019: Operator '!=' cannot be applied to operands of type 'Task' and 'int' (CS0019)
Mein Code ist folgende:
private string createDatabase(string path)
{
try
{
var connection = new SQLiteAsyncConnection(path);{
connection.CreateTableAsync<Person>();
return "Database created";
}
}
catch (SQLiteException ex)
{
return ex.Message;
}
}
private string insertUpdateData(Person data, string path)
{
try
{
var db = new SQLiteAsyncConnection(path);
if (db.InsertAsync(data) != 0)
db.UpdateAsync(data);
return "Single data file inserted or updated";
}
catch (SQLiteException ex)
{
return ex.Message;
}
}
private int findNumberRecords(string path)
{
try
{
var db = new SQLiteConnection(path);
// this counts all records in the database, it can be slow depending on the size of the database
var count = db.ExecuteScalar<int>("SELECT Count(*) FROM Person");
// for a non-parameterless query
// var count = db.ExecuteScalar<int>("SELECT Count(*) FROM Person WHERE FirstName="Amy");
return count;
}
catch (SQLiteException ex)
{
return -1;
}
}
und die Person-Klasse ist die folgende:
using System;
using SQLite;
namespace HelloWorld {
public class Person
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string FullName { get; set; }
public string CarLicense { get; set; }
public override string ToString()
{
return string.Format("[Person: ID={0}, FullName={1}, CarLicense={2}]", ID, FullName, CarLicense);
}
}
}
jemand mir helfen kann mit dem dieser Fehler?
danke, das war der Fehler. Und ich muss auch abwarten, oder? –
Nein, weil die Erwartung in der InsertAsync passiert glaube ich. Um dies zu tun, müssten Sie es in Ihrer eigenen asynchronen Methode aufrufen und auf die Antwort warten und dann das int zum Vergleich zurückgeben. –
Dies ist sehr gefährlich und kann zu Deadlocks führen. Verwende 'erwarten'! –