많은 RDBMS가 DDL SQL 문을 지원합니다. ADOX는 일부 데이터베이스에서 새 테이블을 만드는 작업을 수행하는 데 사용할 수 있습니다. 필자는 특히 프로그램이 내부 데이터 저장소 또는 출력 형식으로 "임베디드"파일 기반 데이터베이스를 사용하는 경우 특히 이색 적이라고 생각하지 않습니다.
필요에 따라 색인, 제약 조건, 관계 등을 만드는 데 문제가 없습니다. 예 :
Private Const WG_CONNSTRING As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;" _
& "Jet OLEDB:Create System Database=True;" _
& "Data Source='$MDB$.mdw'"
Private Const DB_CONNSTRING As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;" _
& "Jet OLEDB:System Database='$MDB$.mdw';" _
& "Data Source='$MDB$.mdb'"
'Exits with new MDB created, populated from initial data
'in text files, and cnDB left open.
Dim catDB As Object 'Don't early-bind ADOX objects.
Set catDB = CreateObject("ADOX.Catalog")
catDB.Create Replace$(WG_CONNSTRING, "$MDB$", MDB_NAME)
catDB.Create Replace$(DB_CONNSTRING, "$MDB$", MDB_NAME)
Set cnDB = catDB.ActiveConnection
With cnDB
.Execute "CREATE TABLE Fruits (" _
& "FruitID IDENTITY NOT NULL CONSTRAINT PK_FruitID PRIMARY KEY," _
& "Fruit TEXT(50) WITH COMPRESSION NOT NULL UNIQUE" _
& ")", _
, adCmdText
.Execute "CREATE TABLE Pies (" _
& "PieID IDENTITY NOT NULL CONSTRAINT PK_PieID PRIMARY KEY," _
& "Pie TEXT(50) WITH COMPRESSION NOT NULL," _
& "FruitID INTEGER NOT NULL CONSTRAINT FK_FruitID " _
& "REFERENCES Fruits (FruitID)" _
& ")", _
, adCmdText
.Execute "CREATE VIEW PiesView (ID, Pie, Fruit) AS " _
& "SELECT PieID AS ID, Pie, Fruit " _
& "FROM Pies LEFT OUTER JOIN Fruits " _
& "ON Pies.FruitID = Fruits.FruitID", _
, adCmdText
.Execute "CREATE PROC InsertPie(NewPie TEXT(50), FruitName TEXT(50)) AS " _
& "INSERT INTO Pies (Pie, FruitId) " _
& "SELECT NewPie, Fruits.FruitId FROM Fruits " _
& "WHERE Fruit = FruitName", _
, adCmdText
End With
'내 회사는 데이터베이스에 대한 혐오감을 갖고 있으며 모든 데이터를 쉼표로 구분 된 파일'OMG, 공포로 저장하는 데 전념했습니다. – Pete
어떤 경우에는 공포라고 생각합니다. 플랫 파일을 쉽고 빠르게 읽고 쓸 수 있다는 장점이 있지만 관계형 데이터를 다루는 방법은 없습니다. 아무도 그것을 개발하기가 힘들었 기 때문입니다. – Ryan