web-dev-qa-db-ja.com

プログラムでC#でMicrosoft Accessデータベースを作成する方法

Microsoft Accessデータベースファイルがまだ存在しない場合、C#でどのように作成しますか?

18
LEMUEL ADANE

最も簡単な答えは、空の.mdb/.accdbファイルをプログラムに埋め込み、それをディスクに書き込むことです。

正解は、ADOXライブラリでCOM相互運用機能を使用することです。

var cat = new ADOX.Catalog()
cat.Create(connectionString);

OleDbConnectionStringBuilderを使用して接続文字列を生成することを忘れないでください。

17
SLaks

試してください:

using ADOX; //Requires Microsoft ADO Ext. 2.8 for DDL and Security
using ADODB;

public bool CreateNewAccessDatabase(string fileName)
{
bool result = false; 

ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();

//Create the table and it's fields. 
table.Name = "Table1";
table.Columns.Append("Field1");
table.Columns.Append("Field2");

try
{
    cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5");
    cat.Tables.Append(table);

    //Now Close the database
    ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
    if (con != null)
    con.Close();

    result = true; 
}
catch (Exception ex)
{
    result = false;
}
cat = null;
return result;
} 

http://zamirsblog.blogspot.com/2010/11/creating-access-database.html

13
Zamir

私のコンピューター、Windows 7 sp1 Professional 64ビットでは、Microsoft ADO Ext。2.8 for DDL and Security forC:\ Program Files\Common Files\System\ado\msadox28.dll

それは参照としても見つかります:

enter image description here

[〜#〜] adox [〜#〜]として参照に含まれています

enter image description here

デフォルトでは、列はtext [255]として作成されます。以下は、さまざまなデータ型として列を作成するいくつかの例です。

table.Columns.Append("PartNumber", ADOX.DataTypeEnum.adVarWChar, 6); // text[6]
table.Columns.Append("AnInteger", ADOX.DataTypeEnum.adInteger); // Integer 

アクセスデータベースフィールドを作成および読み取るためのこのデータ型のリストを見つけました

Access Text = adVarWChar

アクセスメモ= adLongVarWChar

アクセス数値バイト= adUnsignedTinyInt

Access Numeric Integer = adSmallInt

Access Numeric Long Integer = adInteger

数値の単精度へのアクセス= adSingle

数値の倍精度へのアクセス= adDouble

数値レプリカアクセスID = adGuid

Access Numeric Decimal = adNumeric

アクセス日/時間= adDate

アクセス通貨= adCurrency

オートナンバーへのアクセス= adInteger

アクセスはい/いいえ= adBoolean

HyperLinkにアクセス= adLongVarWChar

10
Jim Lahman

DAO/ACEライブラリの CreateDatabase メソッドを使用できます(Officeと共にインストールされるか、または here からダウンロードできます)。

// using Microsoft.Office.Interop.Access.Dao;
// using static Microsoft.Office.Interop.Access.Dao.DatabaseTypeEnum;

const string dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0";

var engine = new DBEngine();
var dbs = engine.CreateDatabase(@"c:\path\to\database.accdb", dbLangGeneral, dbVersion120);
dbs.Close();
dbs = null;

データベースでサポートするAccess/Jetのバージョンによっては、DatabaseTypeEnum enumの他の値を使用できることに注意してください。

  • dbVersion10
  • dbVersion11
  • dbVersion20
  • dbVersion30
  • dbVersion40
  • dbVersion120
  • dbVersion140
  • dbVersion150

また、データベースを暗号化するか、別の照合順序を選択することもできます。

注意:64ビットマシンで64ビットプログラムの一部としてコードを実行する場合は、64ビットバージョンのエンジンが必要です。 32ビットバージョンが既にインストールされている場合(Officeまたはダウンロード経由)、/passiveフラグと/silentフラグを使用して64ビットインストーラーを実行する必要があります。そうしないと、以前にインストールされた32ビットコンポーネントの上に64ビットコンポーネントをインストールできないというメッセージが表示されます。

0
Zev Spitz