2012-04-18 148 views
0

我創建SQLite的一個輔助類在C#(使用Data.SQLite)這裏我把喜歡的getTables,GetColumnNames,方法在SQLite的數據庫...附加使用.NET不工作

現在我加入方法AttachDatabase附加一個數據庫,但似乎沒有工作。

此方法的代碼如下

public void AttachDatabase(string path) 
    { 
     string db_name = "attdb"; 
     sqlConnection.Open(); 

     SQLiteCommand scom = new SQLiteCommand(sqlConnection); 
     scom.CommandText = "ATTACH '"+path+"' AS " + db_name; 

     scom.ExecuteNonQuery(); 

     sqlConnection.Close(); 
    } 

該方法不拋出任何異常,當我提供的數據庫文件的路徑。


,並測試它,我加入輔助類的另一種方法是這樣的

public List<string> GetAllDatabases() 
    { 
     List<string> mylist = new List<string>(); 

     sqlConnection.Open(); 
     SQLiteCommand scom = new SQLiteCommand("PRAGMA database_list", sqlConnection); 
     SQLiteDataReader sreader = scom.ExecuteReader(); 

     while (sreader.Read()) 
     { 
      string name = (sreader.GetValue(1)).ToString(); 
      mylist.Add(name); 
     } 
     sqlConnection.Close(); 

     return mylist; 
    } 

附加數據庫後,該方法返回與它僅適用於主表的列表。

我在做什麼錯?

+0

你想達到什麼目的? – 2012-04-18 06:55:41

回答

2

Sqlite不會持續附加的數據庫。每次打開和關閉連接時,連接的數據庫都會被遺忘。

+0

我應該只保持連接在輔助類中打開,而不是像現在這樣在每種方法中打開/關閉連接?我只打算使用桌面應用程序的sqlite。 – user850010 2012-04-18 07:44:20

+0

這個問題沒有通用的答案。如果你一次只有一個應用程序訪問數據庫,那麼我認爲使用相同的連接是可以的(儘管關於多線程有一些陷阱)。如果您只想獲取有關數據庫文件的信息,則可以打開該文件的單個連接並查詢該文件,而無需附加該文件。這一切都取決於你的情況。 – 2012-04-18 10:17:46