2011-01-24 5 views
14

C#으로 Microsoft Access 데이터베이스 파일을 만들려면 어떻게해야합니까?C#에서 Microsoft Access 데이터베이스를 프로그래밍 방식으로 만드는 방법은 무엇입니까?

+0

는 액세스해야합니까하거나 파일을 찾고 있습니다 데이터를 저장하는 기반 데이터베이스 솔루션? 그게 전부라면 SQLite는 멋지고 이식성이 좋습니다. – jlafay

+0

예, Android에서 SQLite를 사용 중입니다. –

답변

15

가장 간단한 대답은 빈 .mdb/.accdb 파일을 프로그램에 포함시키고 디스크에 기록하는 것입니다.

정답은 ADOX 라이브러리와 COM 상호 운용성을 사용하는 것입니다

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

OleDbConnectionStringBuilder를 사용하여 연결 문자열을 생성해야합니다.

+3

힌트 : "ADOX 라이브러리"는 내 컴퓨터에서 "Microsoft ADO Ext. 6.0 for DDL and Security"로 발견 될 수 있습니다. – Matthias

9

시도 : 내 컴퓨터에서

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

9

, 윈도우 7 SP1 프로페셔널 64 비트, 나는 마이크로 소프트 ADO 내선을 발견했다. DDL 및 보안에 대한 설명은 입니다. C : \ Program Files \ Common Files \ System \ ado \ msadox28.dll입니다.

또한 참조로된다

: 참조 기본적

enter image description here

에 ADOX포함된다

enter image description here

, 열 텍스트 [으로 만든 255]. 다른 데이터 유형으로 열을 작성하는 몇 가지 예가 있습니다.

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

나는 = adLongVarWChar

액세스 숫자 바이트 = adUnsignedTinyInt

만들 수있는 데이터 유형의 목록을 발견하고 액세스 데이터베이스 필드를

액세스 텍스트 = adVarWChar

액세스 메모를 읽어

액세스 숫자 정수 = adSmallInt

액세스 숫자 정수 (Long) = adInteger

액세스 숫자 단일 정밀도 = adSingle

액세스 숫자를 두 번 정밀 = adDouble

액세스 숫자 Replicatie-ID adGuid

액세스 숫자 진수 = adNumeric

액세스 날짜/시간 = adDate

액세스 통화 = adCurrency

액세스 일련 번호 = adInteger

액세스 예/아니오 = adBoolean

액세스의 HyperLink = adLongVarWChar

+1

설명에 유의하십시오. Zamir의 의견을 따라하십시오. –

+0

일련 번호 열을 만들고 싶다면 'AutoIncrement' 값을 true로 설정해야한다는 사실에 대해 매우 늦은 메모입니다. 이것은 Catalog를 생성 한 후에 발생하는데, 여기에서 카탈로그에 대한 열에 대해'ParentCatalog'를 설정 한 다음, 열의'Properties [ "AutoIncrement"] .Value'를'true'로 설정합니다. –

관련 문제