2017-07-18 4 views
2

TabellenstrukturWie kann man den String-Wert von der lokalen Datenbank in Xamarin abrufen?

[Table(TableConst.TABLE_BRANDING)] 
public class BrandingInfoModel 
{ 
    public int id { get; set; } 
    public string title { get; set; } 
    public string primary_color { get; set; } 
    public string secondary_color { get; set; } 
    public string tertiary_color { get; set; } 
} 

Methode Ressource aus der Datenbank erhalten

public string GetColorResourceFromDatabase(string key) 
    { 
     try 
     { 

      string value = mSqlConnection.Query<string>("SELECT " + key + " FROM data").ToString(); 
      return value; 

     } 
     catch (Exception e) 
     { 
      string error = e.Message; 
      return null; 
     } 

    } 

ich die Methode geschrieben haben, die den Wert aus der lokalen Datenbank auf SELECT Abfrage basiert zurückgibt. Aber es gibt die Null zurück.

+0

Teilen Sie Ihre 'Daten' Tabelle Struktur –

+0

Wenn KEY ist die PK des Elements, das Sie auswählen möchten, dann ist Ihre SQL-Syntax falsch. – Jason

+0

Der generische Parameter für die Query-Methode gibt den Typ des Objekts an, das für jede Zeile erstellt werden soll (Sie geben an, dass die Zeichenfolge verwendet werden soll). Es kann eine Ihrer Tabellenklassen oder eine andere Klasse sein, deren ** öffentliche Eigenschaften ** mit der von der Abfrage zurückgegebenen Spalte übereinstimmen. Sie können einen Spaltenwert nicht in ein Zeichenfolgenobjekt erzwingen, da er keine öffentlichen Eigenschaften aufweist (zumindest nicht mit der Query-Methode). Beachten Sie außerdem, dass die von Ihnen ausgeführte Abfrage möglicherweise mehrere Zeilen zurückgeben kann. Ich bin mir nicht sicher, warum Sie versuchen, ToString in einer Liste von Zeilen aufzurufen. –

Antwort

4

Ich habe versucht, auf diese Weise

//Get resource from Brading table 
    public BrandingInfoModel GetResourceFromDatabase(string key) 
    { 
     try 
     { 
      //string value = (from i in mSqlConnection.Table<BrandingInfoModel>() select i.menu_text_color).ToString(); 

      var queryResult = mSqlConnection.Query<BrandingInfoModel>("SELECT " + key + " FROM " + TableConst.TABLE_BRANDING).FirstOrDefault(); 
      return queryResult; 

     } 
     catch (Exception e) 
     { 
      string error = e.Message; 
      return null; 
     } 

    } 

Es gibt die gewünschte Ausgabe.

0

Anstatt SQL-Abfrage zu verwenden, um die Auswahl zu treffen. Bitte denken Sie daran, die Linq-Abfrage zu verwenden, um das gleiche Ergebnis zu erzielen.

Zum Beispiel, wenn Sie eine Zeile auszuwählen und die primary_color mit id zu erhalten:

var rowData = mSqlConnection.Table<BrandingInfoModel>() 
          .FirstOrDefault(i => i.id == 123); 
if (rowData != null) 
{ 
    return rowData.primary_color; 
} 
Verwandte Themen