5

.accdbC# (web asp.net ではなくコンソール アプリケーション) で Microsoft Access ( ) データベースを使用するにはどうすればよいですか? 私が読んだことから、私は を使用する必要がありますがADO.NET、C# コンソール アプリケーションでこれを行う方法については本当に途方に暮れています。を使用した PHP ではMySQLmysqli_construct誰かが私をチュートリアルやドキュメントに向けて教えてくれますか? Web 以外、ASP.NET 以外のアプリケーションのデータを保存してアクセスする方法として使用しようとしています。

ありがとう!

4

3 に答える 3

10

ADO.NET を使用して Access データベースを編集する方法については、このチュートリアルを参照してください。

この例では Web アプリケーションを使用していますが、心配する必要はありません。使用されているクラスは、コンソール アプリケーションにも適用できます。

使用する必要がある主なクラスは次のとおりです。

上記のすべてのクラスのドキュメントには、コンソール アプリの例であるコード サンプルがあります。

以下は、コンソール アプリで使用するためのコード スニペットです (以下を忘れずに追加してください:using System.Data.OleDb;

string connectionString = 
    @"Provider=Microsoft.Jet.OLEDB.4.0;" +
    @"Data Source=C:\path\to\your\database.mdb;" +
    @"User Id=;Password=;";

string queryString = "SELECT Foo FROM Bar";

using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = new OleDbCommand(queryString, connection))
{
    try
    {
        connection.Open();
        OleDbDataReader reader = command.ExecuteReader();

        while (reader.Read())
        {
            Console.WriteLine(reader[0].ToString());
        }
        reader.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

また、あなたが明示的に .accdb データベースと言ったことに気付きました。これには、Microsoft Access データベース エンジン 2010 再頒布可能パッケージを入手してください。次に、接続文字列のプロバイダーを次のように変更する必要がありますMicrosoft.ACE.OLEDB.12.0(詳細については、そのリンクのメモを参照してください)。

于 2012-04-23T02:02:56.177 に答える
3

を使用するだけSystem.OleDbです。ここに私が使用する小さなクラスがあります

まず、データベース ファイルを App_Data 内に配置します。

web.config

<connectionStrings>
    <add name="MyConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DatabaseName.accdb" providerName="System.Data.OleDb"/>
</connectionStrings>

App_Code/DataAccess.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;

public class DataAccess
{


    #region "Public Methods"

    public static DataTable GetTableFromQuery(string query, Dictionary<string, object> parameters, CommandType commandType)
    {
        DataTable dataTable = new DataTable();
        using (OleDbConnection conn = GetConnection()) {
            using (OleDbCommand cmd = new OleDbCommand(query, conn)) {
                cmd.CommandType = commandType;
                if (parameters != null) {
                    foreach (KeyValuePair<string, object> parameter in parameters) {
                        cmd.Parameters.AddWithValue(parameter.Key, parameter.Value);
                    }
                }
                using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd)) {
                    adapter.Fill(dataTable);
                }
            }
        }
        return dataTable;
    }

    public static object GetSingleObjectFromQuery(string query, Dictionary<string, object> parameters, CommandType commandType)
    {
        object value = null;
        using (OleDbConnection conn = GetConnection()) {
            using (OleDbCommand cmd = new OleDbCommand(query, conn)) {
                cmd.CommandType = commandType;
                if (parameters != null) {
                    foreach (KeyValuePair<string, object> parameter in parameters) {
                        cmd.Parameters.AddWithValue(parameter.Key, parameter.Value);
                    }
                }
                conn.Open();
                using (OleDbDataReader reader = cmd.ExecuteReader()) {
                    while (reader.Read()) {
                        value = reader.GetValue(0);
                    }
                }
            }
        }
        return value;
    }

    public static int ExecuteNonQuery(string query, Dictionary<string, object> parameters, CommandType commandType)
    {
        int value = 1;
        using (OleDbConnection conn = GetConnection()) {
            using (OleDbCommand cmd = new OleDbCommand(query, conn)) {
                cmd.CommandType = commandType;
                if (parameters != null) {
                    foreach (KeyValuePair<string, object> parameter in parameters) {
                        cmd.Parameters.AddWithValue(parameter.Key, parameter.Value);
                    }
                }
                cmd.Connection.Open();
                value = cmd.ExecuteNonQuery();
            }
        }
        return value;
    }

    #endregion

    #region "Private Methods"

    private static OleDbConnection GetConnection()
    {
        string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString;
        return new OleDbConnection(ConnectionString);
    }

    #endregion

}


次のようなページから呼び出します

var myTable = DataAccess.GetTableFromQuery("SELECT * FROM TableName", null, CommandType.Text);
于 2012-04-23T02:12:22.520 に答える
1

ここここにいくつかの簡単な例があるOLEDB 名前空間を見てください。

于 2012-04-23T02:02:47.050 に答える