1

此代碼將創建數據庫中:LocalFolder如何重置主鍵和刪除SQLite的DB中創建

string DBPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "customers.sqlite"); 
using (var db = new SQLite.SQLiteConnection(DBPath)) 
{ 
    // Create the tables if they don't exist 
    db.CreateTable<Customer>(); 
    db.CreateTable<Item>(); 
} 

問題:

  1. 以下這裏的代碼不會重置主鍵爲每個表格設置爲0(或起始數字)一旦每個表格都被使用過。這段代碼是否只能清空表格,但不能重置主鍵?

如何刪除customers.sqlite(數據庫創建),因此,這將所有主鍵恢復到起始號碼0一樣

using (var db = new SQLite.SQLiteConnection(DBPath)) 
{ 
    db.DeleteAll<Customer>(); 
    db.DeleteAll<Item>(); 
} 
+0

這已經在這裏找到答案 http://stackoverflow.com/questions/1601697/sqlite-reset-primary-key-field – n00b

回答

0

通過此查詢,您可以清除表&,然後重置自動增量列。

using (var db = new SQLiteConnection(ApplicationData.Current.LocalFolder.Path + "\\db.sqlite")) 
{ 
    db.Query<your_table_name>("delete from your_table_name", ""); 
    db.Query<sqlite_sequence>("delete from sqlite_sequence where name = ?", "your_table_name"); 
} 

您還必須添加此類。

public class sqlite_sequence 
{ 
    public string name { get; set; } 
    public int seq { get; set; } 
} 
+0

我的表名是客戶:1)db.Query (「從客戶刪除」,「」); 2)db.Query (「delete from sqlite_sequence where name =?」,「Customer」);我包含sqlite_sequence類。 (2)中的刪除語句我不明白。名字=? ,這是必須的嗎? – MilkBottle

+0

如果你[瀏覽SQLite](http://sourceforge.net/projects/sqlitebrowser/),你會看到sqlite_sequence表,它關心主鍵的啓動。在那裏會有'客戶'表的條目。 – Xyroid

+0

從sqlite_sequence中刪除where name =?,這是什麼:name =?該名稱是指表格內的表名或字段名稱。我不確定,但我認爲它是指表名。 – MilkBottle

0

爲了確保自動增量valures復位,可以刪除數據庫文件或刪除表。

+0

如何刪除數據庫並重新創建一個新的?此代碼db.DeleteAll ()表示清空表格。如何放下桌子? – MilkBottle

+0

要刪除數據庫,只需刪除*文件*。要刪除一個表,執行SQL語句'DROP TABLE xxx'。 –

+0

什麼是在WinRT應用程序中刪除Sqlite數據庫的代碼? – MilkBottle

1

此代碼可以重置主鍵,但是如果您需要刪除db,只需刪除sqlite-db文件。

using (var db = new SQLite.SQLiteConnection(localBaseConnection)) 
       { 
        db.DropTable<YourTableName>(); 
        db.CreateTable<YourTableName>(); 
        db.Dispose(); 
        db.Close(); 
       } 
+0

這對我有用 – adrian4aes