Change default data access library to ODBC. (#63)

Improve file extension handling.
pull/64/head
Laurents Meyer 5 years ago committed by GitHub
parent b1431fc386
commit 49d798f6c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -31,7 +31,7 @@
}
}
public static DataAccessProviderType DefaultDataAccessProviderType { get; set; } = DataAccessProviderType.OleDb;
public static DataAccessProviderType DefaultDataAccessProviderType { get; set; } = DataAccessProviderType.Odbc;
// The SQL statement
//

@ -572,8 +572,9 @@ namespace System.Data.Jet
public static bool DatabaseExists(string fileNameOrConnectionString)
{
var fileName = JetStoreDatabaseHandling.ExtractFileNameFromConnectionString(fileNameOrConnectionString)
.Trim('"');
var fileName = JetStoreDatabaseHandling.ExpandFileName(
JetStoreDatabaseHandling.ExtractFileNameFromConnectionString(fileNameOrConnectionString)
.Trim('"'));
if (string.IsNullOrWhiteSpace(fileName))
throw new InvalidOperationException("The file name or connection string is invalid.");

@ -195,16 +195,33 @@ namespace System.Data.Jet.JetStoreSchemaDefinition
public static void DeleteFile(string fileName)
{
JetConnection.ClearAllPools();
fileName = ExpandFileName(fileName);
var directoryPath = Path.GetDirectoryName(fileName) ?? string.Empty;
var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);
var extension = Path.GetExtension(fileName);
if (!File.Exists(fileName))
{
return;
JetConnection.ClearAllPools();
}
File.Delete(fileName);
if (string.Equals(Path.GetExtension(fileName), "accdb", StringComparison.OrdinalIgnoreCase))
if (string.IsNullOrEmpty(extension) ||
string.Equals(extension, ".accdb", StringComparison.OrdinalIgnoreCase) ||
!string.Equals(extension, ".mdb", StringComparison.OrdinalIgnoreCase))
{
File.Delete(Path.Combine(directoryPath, fileNameWithoutExtension + ".laccdb"));
}
if (string.IsNullOrEmpty(extension) ||
string.Equals(extension, ".mdb", StringComparison.OrdinalIgnoreCase) ||
!string.Equals(extension, ".accdb", StringComparison.OrdinalIgnoreCase))
{
File.Delete(Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + ".laccdb"));
File.Delete(Path.Combine(directoryPath, fileNameWithoutExtension + ".ldb"));
}
}
@ -227,7 +244,18 @@ namespace System.Data.Jet.JetStoreSchemaDefinition
fileName = Path.Combine(dataDirectory, fileName.Substring("|DataDirectory|".Length));
}
return Path.GetFullPath(fileName);
return EnsureFileExtension(Path.GetFullPath(fileName));
}
public static string EnsureFileExtension(string fileName)
{
var extension = Path.GetExtension(fileName);
if (string.IsNullOrEmpty(extension))
{
fileName += ".accdb";
}
return fileName;
}
}
}
Loading…
Cancel
Save