Как подключиться к файлу MS Access (mdb) с помощью C#?
Я пытаюсь подключиться к файлу MDB и я понимаю, что мне нужно Microsoft.OLEDB.JET.4.0
поставщик данных. К сожалению, я не установил его на (Университетской) машине.
Поскольку они не предоставляют этого провайдера, я считаю, что должен быть способ обойти.
как я могу подключиться к файл без Microsoft.OLEDB.JET.4.0
или есть какая-то альтернатива ?
у меня есть следующие провайдеры:
Я пробовал использовать OLE DB Provider for Microsoft Directory Services
, к которому пока испытывающ соединение, я получаю "тест успешно, но некоторые настройки не были приняты поставщиком". Я взял эту строку и использовал ее в любом случае, и я получил ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14)
.
6 ответов
самый простой способ подключения - через OdbcConnection с использованием такого кода
using System.Data.Odbc;
using(OdbcConnection myConnection = new OdbcConnection())
{
myConnection.ConnectionString = myConnectionString;
myConnection.Open();
//execute queries, etc
}
где myConnectionString-это что-то вроде этого
myConnectionString = @"Driver={Microsoft Access Driver (*.mdb)};" +
"Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;
посмотреть ConnectionStrings
в качестве альтернативы вы можете создать DSN, а затем использовать этот DSN в строке подключения
- Откройте Панель управления - Администрирование - источник данных ODBC Менеджер!--15-->
- перейдите на страницу System DSN и добавьте новый DSN
- выберите драйвер Microsoft Access (*.mdb) и нажмите END
- задайте имя DSN (выберите MyDSN для этого примера)
- выбрать базу данных для использования
- попробуйте команды Compact или Recover, чтобы узнать, работает ли соединение
Теперь ваша connectionString может быть написана таким образом
myConnectionString = "DSN=myDSN;"
вот как использовать Jet OLEDB или Ace Oledb Access DB:
using System.Data;
using System.Data.OleDb;
string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\myPath\myFile.mdb;" +
"Persist Security Info=True;" +
"Jet OLEDB:Database Password=myPassword;";
try
{
// Open OleDb Connection
OleDbConnection myConnection = new OleDbConnection();
myConnection.ConnectionString = myConnectionString;
myConnection.Open();
// Execute Queries
OleDbCommand cmd = myConnection.CreateCommand();
cmd.CommandText = "SELECT * FROM `myTable`";
OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // close conn after complete
// Load the result into a DataTable
DataTable myDataTable = new DataTable();
myDataTable.Load(reader);
}
catch (Exception ex)
{
Console.WriteLine("OLEDB Connection FAILED: " + ex.Message);
}
вы должны использовать "поставщик Microsoft OLE DB для драйверов ODBC", чтобы получить доступ к Microsoft Access. Вот пример учебника по его использованию
http://msdn.microsoft.com/en-us/library/aa288452 (v=против 71).aspx
какое расширение файла Access или вы используете? Реактивный OLEDB или Ace OLEDB. Если ваш DB доступа .mdb (он же Jet Oledb)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Oledb
namespace MembershipInformationSystem.Helpers
{
public class dbs
{
private String connectionString;
private String OleDBProvider = "Microsoft.JET.OLEDB.4.0"; \if ACE Microsoft.ACE.OLEDB.12.0
private String OleDBDataSource = "C:\yourdb.mdb";
private String OleDBPassword = "infosys";
private String PersistSecurityInfo = "False";
public dbs()
{
}
public dbs(String connectionString)
{
this.connectionString = connectionString;
}
public String konek()
{
connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + "";
return connectionString;
}
}
}
попробуйте это..
using System.Data.OleDb;
OleDbConnection dbConn;
dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;");
еще один простой способ для подключения через OdbcConnection используя App.config такой
<appSettings>
<add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True"/>
</appSettings>
базы данных mydb.mdb - это мой файл базы данных, и он присутствует в текущей основной папке приложения с основным exe-файлом.
Если ваш файл mdf имеет пароль, используйте вот так
<appSettings>
<add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Admin$@123"/>
</appSettings>