我有一個MS Access文件用於在我的C#項目中進行數據記錄,但是當系統打開並且另一個遠程工作站想要訪問此MS Access文件時,它會通知您無法訪問該文件,因爲它已被使用?這可以編程在C#中,這個MS Access文件可以共享到另一個工作站? 這是我的代碼。如何在C#中共享MS Access數據庫文件?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data.OleDb;
using System.Security.AccessControl;
using ADOX;
namespace TestDataLog
{
public class TestDataLog
{
OleDbConnection dbConnection = null;
OleDbConnectionStringBuilder oleDbConnectionStringBuilder = null;
OleDbCommand command;
public string FileName { get; set; }
public string TableName { get; set; }
public TestDataLog(string tableName, string path, string fileName = "TestDataLog.Mdb")
{
try
{
TableName = tableName;
FileName = fileName;
dbConnection = new OleDbConnection();
oleDbConnectionStringBuilder =
new OleDbConnectionStringBuilder();
oleDbConnectionStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
path = Path.Combine(path, FileName);
oleDbConnectionStringBuilder.DataSource = path;
oleDbConnectionStringBuilder.ConnectionString += ";Jet OLEDB:Engine Type=5";
if (!File.Exists(path))
{
Catalog catalog = new Catalog();
catalog.Create(oleDbConnectionStringBuilder.ConnectionString);
}
this.Open();
this.CreateTable();
}
catch (Exception ex)
{
this.Close();
throw ex;
}
}
public void Log(string serial, bool testResult)
{
try
{
command = dbConnection.CreateCommand();
command.CommandText = "INSERT INTO " + TableName +
" (DateTimeLog," +
" SN," +
" TestResult)" +
" VALUES(#" +
DateTime.Now + "#, '" +
serial + "', " +
testResult + ")";
command.ExecuteNonQuery();
this.Close();
}
catch (Exception ex)
{
this.Close();
throw ex;
}
}
public void Open()
{
if (!(dbConnection.State == System.Data.ConnectionState.Open))
{
dbConnection.ConnectionString =
oleDbConnectionStringBuilder.ConnectionString;
dbConnection.Open();
}
}
public void Close()
{
if (dbConnection != null)
if (!(dbConnection.State == System.Data.ConnectionState.Closed))
{
dbConnection.Close();
dbConnection = null;
}
}
public void CreateTable()
{
try
{
command = dbConnection.CreateCommand();
command.CommandText =
"CREATE TABLE " + TableName + " (" +
"[Count] IDENTITY NOT NULL PRIMARY KEY, " +
"[DateTimeLog] TIMESTAMP NOT NULL, " +
"[SN] VARCHAR(50) NOT NULL, " +
"[TestResult] BIT NOT NULL)";
command.ExecuteNonQuery();
}
catch (OleDbException ex)
{
if (!(ex.Message.StartsWith("Table") && ex.Message.EndsWith("already exists.")))
{
this.Close();
throw ex;
}
}
}
}
}
是否有您所使用的訪問,而不是像SQL Server Express的什麼原因? – 2011-02-11 23:11:23