演習用の簡単なアプリケーションを作成したいので、Access(.accdb)のような簡単なデータベースに接続すると便利です。
私のプログラムは次のようになります:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Web;
namespace myProject.Account
{
public class DbManager
{
private OleDbConnection _dbConnection;
public void OpenDbConnection()
{
_dbConnection = new OleDbConnection {ConnectionString = GetConnectionString()};
}
private string GetConnectionString()
{
return "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=exercise1.accdb";
}
public void CloseDbConnection()
{
_dbConnection.Close();
}
public void GetUser()
{
DataSet myDataSet = new DataSet();
var myAdapptor = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand("SELECT * FROM tblUser", _dbConnection);
myAdapptor.SelectCommand = command;
myAdapptor.Fill(myDataSet, "tblUser");
}
}
}
Visual Studio 2010を使用しています。組み込みのデバッグモード "デバッグなしで開始"(CTRL + F5)を使用してアプリケーションをテストすると、次のエラーが発生します。
「Microsoft.ACE.OLEDB.14.0」プロバイダーがローカルマシンに登録されていません。
Microsoft omepageから "Microsoft Access Database Engine 2010 Redistributable"(64ビット)をダウンロードしてインストールしようとしました: http://www.Microsoft.com/download/en/details.aspx?id=13255 =
残念ながらそれは問題を解決しませんでした。 myAdapptor.Fill()を実行してもエラーが発生します。なにが問題ですか?
Access 2007 Runtime が必要です。
私のソリューションに関心のある他の人のために、Microsoft.ACE.OLEDB.14.0がAccess 2010ではサポートされていないことに気付きました。代わりに、Microsoft.ACE.OLEDB.12.0を使用しました。
「2007 Office System Driver:Data Connectivity Components」は次のサイトからダウンロードできます。 2007 Office System Driver:Data Connectivity Components
同様の問題がありましたが、私の場合は計画が古いmdbでした。 Provider = Microsoft.Jet.OLEDB.4.0はそのためのトリックを実行します。追加のランタイムをダウンロードする必要はありません。
System.Data.OleDb
ライブラリを使用して追加します。
接続文字列
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Aishwar NIGAM\\Documents\\indianOil.accdb");