我有一個ado.net代碼:C#應用程序持有的文件,即使我已經完成的工作與它
OleDbConnection oconn = new OleDbConnection();
// oconn.ConnectionString ="Driver={Microsoft Visual FoxPro Driver};Provider=vfpoledb.1;SourceType=DBF;SourceDB=" + pelna_sciezka + ";Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
oconn.ConnectionString = "Provider=vfpoledb.1;Data Source=" + pelna_sciezka + ";Collating Sequence=machine";
oconn.Open();
OleDbCommand ocmd = oconn.CreateCommand();
string na = TBNazwaKonta.Text.Replace("\n","");
na = na.Replace("\r","") ;
string ks2 = ks.Replace("\n","");
ks2 = ks2.Replace("\r", "");
OleDbCommand dbCmdNull = oconn.CreateCommand();
dbCmdNull.CommandText = "SET NULL OFF";
dbCmdNull.ExecuteNonQuery();
string zapytanie = @"insert into " + @pelna_sciezka + @" (rk, Na,Ks) values (0,'" + na + "','" + ks2 +"')";
ocmd.CommandText = zapytanie;
ocmd.ExecuteNonQuery();
oconn.Close();
它的工作很好,沒有任何問題。但是我使用的dbf文件正在被另一個程序使用。爲什麼如果我執行查詢並關閉連接,dbf文件仍然由程序持有?如果有人想打開它,錯誤消息是'文件訪問被拒絕'。只有當我關閉應用程序,另一個可以訪問
如果在某處引發異常,則不會實際關閉連接。利用代碼中的使用語句來清理實現IDisposable的資源。 http://msdn.microsoft.com/en-us/library/yh598w02.aspx –
你嘗試過'oconn.Dispose()'(關閉的insead)嗎? – ekholm
使用像Heinzi這樣的'使用'模塊暗示 – Jodrell