【发布时间】:2023-12-23 22:59:02
【问题描述】:
我有一个 ado.net 代码清单:
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 文件仍由程序保存?如果有人想打开它,错误消息是“文件访问被拒绝”。只有当我关闭应用程序时,另一个才能访问
【问题讨论】:
-
如果某处抛出异常,您实际上并没有关闭连接。在代码中使用 using 语句来清理实现 IDisposable 的资源。 msdn.microsoft.com/en-us/library/yh598w02.aspx
-
你试过
oconn.Dispose()(insead of Close) 吗? -
像 Heinzi 建议的那样使用
using块 -
没有抛出异常 - 所有行都顺利通过。当我想从外部应用程序访问 dbf 文件时,会显示文件访问被拒绝。我使用 using 和 dispose - 它不起作用
标签: c# .net ado.net connection dbf