2013-06-11 1 views
3

빠른 Google에서 ADOX를 사용하여 새 데이터베이스를 만들고 일부 테이블과 행을 추가하는 방법을 알았습니다. 다음은 그 예이다 :ADOX를 사용하여 기존 Access 데이터베이스에 연결하는 방법

using ADOX; 
... 
ADOX.Catalog cat = new ADOX.Catalog(); 
cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=mydb.accdb;"); 
Table mainTable = new Table(); 
mainTable.Name = "Test Table"; 
mainTable.Columns.Append("Column_1"); 
cat.Tables.Append(mainTable); 

이 새 데이터베이스를 생성하고 새로 만든 데이터베이스와 함께 작동하지만 기존의 데이터베이스를 가지고 있다면 가 어떻게 기존 데이터베이스에 연결 ADOX.Catalog cat;을 얻을 것?

답변

3

확인, 내가 그것을 알아 냈어. 당신은 msdn에서 다음 예와 같은 ADODB.connection 개체에 ActiveConenction 속성을 설정해야합니다 :

Dim cnn As New ADODB.Connection 
Dim cat As New ADOX.Catalog 

cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _ 
    "Data Source= 'Northwind.mdb';" 
Set cat.ActiveConnection = cnn 
Debug.Print cat.Tables(0).Type 

cnn.Close 
Set cat = Nothing 
Set cnn = Nothing 
작동하지 않았다 불행하게도
2

다음 VBA 코드에 의해 예시 된 바와 같이, 기존 데이터베이스에 대한 연결 문자열을 설정 cat.ActiveConnection를 사용할 수 있습니다

Sub adoxTest() 
Dim cat As New ADOX.Catalog, tbl As ADOX.Table 
cat.ActiveConnection = _ 
     "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=C:\Users\Public\Database1.accdb;" 
For Each tbl In cat.Tables 
    Debug.Print tbl.Name 
Next 
Set tbl = Nothing 
Set cat = Nothing 
End Sub 
+0

하지만 +1 ActiveConnection 속성을 설정하는 올바른 방향으로 저를 선도합니다. 여하튼 나는 그것을 이해했다. 내 대답 좀 봐 – Krimson

+0

@vidhu upvote 주셔서 감사. C#은'.ActiveConnection' 속성에 대해 VBA보다 조금 더 특이한 것 같아요. 게시하기 전에 코드를 테스트했기 때문에 작동했습니다. –