2016-06-04 12 views
1

Ich versuche Datenbank auf Knopfdruck zu aktualisieren. aber es gibt immer 0 zurück, und die Datenbank wird nicht aktualisiert.SQLlite Update-Abfrage immer 0 zurück in Android-Projekt

string query4 = "update Praysettings set value ='" + LocName + "' where id =52;"; 

db2.ExecuteQuery(query4); 

public void ExecuteQuery(string query) 
{ 
    string dbPath = Path.Combine (
     System.Environment.GetFolderPath (
      System.Environment.SpecialFolder.Personal 
     ), 
     "tzmpo_t.rar" 
    ); 

    if (File.Exists(dbPath)) { 
     using (var db = new SQLiteConnection(dbPath)) 
     { 
      int a = db.Execute(query); 
      db.Close(); 
     } 
    } 
} 
+0

Sie sollten sich überlegen, ob, was Sie auf dem Laufenden wirklich Ihr Problem finden helfen könnte. Vielleicht haben Sie einige Informationen Logcat. Und wenn nicht, hat Ihre Datenbank ein Schema, das Sie teilen könnten. Jedenfalls sieht 'id = 52' nicht richtig aus. Normalerweise wird dieses ID-Feld '_id' genannt. – tynn

+0

es ist etwas mit Parameter Locname Länge, wenn ich Länge reduziert, wurde es erfolgreich aktualisiert, Mein Feldtyp ist VARCHAR, was maximale Grenze von Varchar ist. –

+0

[SQLite gibt keine Längenbeschränkungen] (https://www.sqlite.org/datatype3.html) Könnten Sie bitte Ihr SQL-Schema hinzufügen? – tynn

Antwort

0

Der Wert existiert bereits? Wenn Sie den Wert nicht aktualisieren, sind keine betroffenen Zeilen betroffen. Überprüfen Sie, ob das der Fall ist.

Hier ist der Code, den ich verwenden, kann es Ihnen hilft:

private void OpenConnection() 
    { 
     lock (syncLock) 
     { 
      if (_connection == null || _connection.State == ConnectionState.Closed || _connection.State == ConnectionState.Broken) 
      { 
       _connection = new SqliteConnection("Data Source=" + DbPath); 
       _connection.SetPassword(DbKey); 
       _connection.Open(); 
      } 
     } 
    } 

    private int ExecuteNonQuery(string query) 
    { 
     lock (syncLock) 
     { 
      OpenConnection(); 
      int rowcount = 0; 
      using (var command = _connection.CreateCommand()) 
      { 
       command.CommandText = query; 
       try 
       { 
        rowcount = command.ExecuteNonQuery(); 
       } 
       catch (Exception e) 
       { 
        Logger.Error("ExecuteNonQuery", e.Message + ". Query:" + query); 
       } 
       command.Dispose(); 
      } 

      return rowcount; 
     } 
    } 
+0

es ist etwas mit Parameter Locname Länge, wenn ich Länge reduziert, wurde es erfolgreich aktualisiert, Mein Feldtyp ist VARCHAR, was maximale Grenze von Varchar ist. –

+0

OK, damit Sie die Daten nicht aktualisieren, da Sie einen SQL-Fehler erhalten. Ich glaube nicht, dass Sie VARCHAR verwenden, vielleicht verwenden Sie TEXT, oder? Falls nicht, versuchen Sie es mit TEXT. –

Verwandte Themen