2017-08-03 3 views
0

Ich habe eine Datenbankverbindung mit OLEDB und den Zugang zu bekommen versucht, leider 2016 aber ich ständig bin der Fehler zurückgegeben:C# OLEDB-Datenbank-Verbindung mit Access 2016

System.Data.OleDb.OleDbException was unhandled 
    ErrorCode=-2147467259 
    HResult=-2147467259 
    Message=Not a valid file name. 
    Source=Microsoft Office Access Database Engine 
    StackTrace: 
     at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) 
     at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
     at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) 
     at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) 
     at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) 
     at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
     at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
     at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
     at System.Data.OleDb.OleDbConnection.Open() 
     at Program_V1._0.Form1..ctor() in C:\Users\Tom\Documents\College\Computer_Science_Project _2017_Ver2.0\Program_Files\Program_V1.0\Program_V1.0\Form1.cs:line 24 
     at Program_V1._0.Program.Main() in C:\Users\Tom\Documents\College\Computer_Science_Project _2017_Ver2.0\Program_Files\Program_V1.0\Program_V1.0\Program.cs:line 19 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

Von diesem Abschnitt des Codes:

//Database Connection 
    OleDbConnection connection = new OleDbConnection(); 
    connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪C:\Users\Tom\Documents\College\Computer_Science_Project _2017_Ver2.0\Program_Files\Program_V1.0\Program_V1.0\Databases\DecodeTimes.accdb; 
    Persist Security Info=False;"; 
    connection.Open(); 
    label3.Text = " - Database Connected - "; 
    connection.Close(); 

Versuchen Sie, wie ich könnte ich sehe kein Problem mit diesem auch nach dem Lesen über Probleme hinsichtlich der Kompatibilität, jede Hilfe würde sehr geschätzt werden.

+0

Ich sehe aus, als könnten Sie einen zufälligen Platz im Dateinamen haben. –

+0

@MattWarren Leider glaube ich, der Dateiname ist alles in Ordnung, da es direkt aus den Dateieigenschaften kopiert wurde, wird aber überprüfen, danke. – Tom

+0

Kürzen Sie den Dateipfad und testen Sie ihn lokal von einem einfachen Dateipfad .. auch Dateinamen mit Leerzeichen müssen um sie herum Angebote enthalten 'Computer_Science_Project _2017_Ver2.0' sollte' Computer_Science_Project_2017_Ver2.0' sein – MethodMan

Antwort

0

Wenn ich Ihre Verbindungszeichenfolge kopieren und in Editor einfügen ++ Set für „ANSI“ encoding I

... Data Source=?C:\ ... 

sehen, die mir sagt, dass die Verbindungszeichenfolge ein nicht-ANSI-Zeichen enthält. Weitere Untersuchungen zeigen, dass das Mystery-Zeichen (das oben als ? angezeigt wird) tatsächlich das unsichtbare Unicode-Zeichen U + 202A (LEFT-TO-RIGHT EMBEDDING) ist. Das Löschen dieses unsichtbaren Zeichens aus der Verbindungszeichenfolge sollte das Problem beheben.

+0

Vielen Dank für Ihre Hilfe, das Problem ist jetzt behoben. Das mag eine dumme Frage sein, aber wie kann ein solcher Charakter in diese Saite gelangen? Nochmals vielen Dank für die Hilfe. – Tom

+0

@Tom - Es passiert oft als Ergebnis eines Kopier- und Einfügevorgangs. –