|
- '=======================================================================================================================
- ' CREATE DATABASE (Standalone VBScript, ADOX)
- '=======================================================================================================================
- ' Creates a new, empty Access (.accdb) database using ADOX.
- '
- ' Usage:
- ' cscript //nologo scripts\createDatabase.vbs [path] [/force]
- '
- ' Defaults to db\webdata.accdb under the project root. Refuses to overwrite an existing file unless /force is given.
- ' Requires the Microsoft Access Database Engine (ACE OLEDB 12.0 or 16.0) matching the bitness of cscript.exe.
- '
- Option Explicit
-
- Dim fso, scriptDir, projectRoot, dbPath, force, i, arg
- Dim providers, p, cat, created, lastErr
-
- Set fso = CreateObject("Scripting.FileSystemObject")
- scriptDir = fso.GetParentFolderName(WScript.ScriptFullName)
- projectRoot = fso.GetAbsolutePathName(scriptDir & "\..")
- dbPath = projectRoot & "\db\webdata.accdb"
- force = False
-
- For i = 0 To WScript.Arguments.Count - 1
- arg = WScript.Arguments(i)
- If LCase(arg) = "/force" Then
- force = True
- Else
- dbPath = fso.GetAbsolutePathName(arg)
- End If
- Next
-
- If fso.FileExists(dbPath) Then
- If Not force Then
- WScript.Echo "Error: " & dbPath & " already exists. Use /force to overwrite."
- WScript.Quit 1
- End If
- fso.DeleteFile dbPath, True
- End If
-
- If Not fso.FolderExists(fso.GetParentFolderName(dbPath)) Then
- fso.CreateFolder fso.GetParentFolderName(dbPath)
- End If
-
- providers = Array("Microsoft.ACE.OLEDB.16.0", "Microsoft.ACE.OLEDB.12.0")
- created = False
- lastErr = ""
-
- For Each p In providers
- On Error Resume Next
- Set cat = CreateObject("ADOX.Catalog")
- cat.Create "Provider=" & p & ";Data Source=" & dbPath & ";"
- If Err.Number = 0 Then
- created = True
- Else
- lastErr = p & ": " & Err.Description
- End If
- Err.Clear
- On Error GoTo 0
- Set cat = Nothing
- If created Then
- WScript.Echo "Created " & dbPath & " using " & p
- Exit For
- End If
- Next
-
- If Not created Then
- WScript.Echo "Error: could not create database. " & lastErr
- WScript.Quit 1
- End If
|