Freigeben über


CreateDatabase-Methode (SQL Server Compact)

Die CreateDatabase-Methode erstellt eine neue Microsoft SQL Server Compact 4.0-Datenbank.

Syntax

object.CreateDatabase(LocalConnection)

Parameter

Parameter

Beschreibung

LocalConnection

Ein Zeichenfolgenwert, der den Pfad und den Dateinamen der zu erstellenden Datenbank angibt.

Prototyp

HRESULT CreateDatabase(BSTR LocalConnection);

Beispiel

Im ersten Beispiel wird dargestellt, wie eine MicrosoftSQL Server Compact 4.0-Datenbank, in der Groß-/Kleinschreibung berücksichtigt wird, erstellt, verschlüsselt, aktualisiert, komprimiert und repariert werden kann. Im zweiten Beispiel wird dargestellt, wie eine Microsoft SQL Server Compact 4.0-Datenbank erstellt, komprimiert und repariert wird, wobei die Groß-/Kleinschreibung bei der Sortierung berücksichtigt wird. Weitere Informationen über SQL Server Compact-Datenbanken, bei denen die Groß-/Kleinschreibung beachtet wird, finden Sie unter Arbeiten mit Sortierungen (SQL Server Compact).

// The first example:
// ClientAgent.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

// Include OS Header files
//

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include<iostream>
// Include OS Header files
//
#include <sqlce_err.h>
#include <sqlce_oledb.h>
#include <sqlce_sync.h>

#define ExitOnFail(hr)              { if (FAILED(hr)) goto Exit; }
#define ExitOnNull(ptr)             { if (NULL == (ptr)) goto Exit; }
#define ExitOnFailOrNull(hr, ptr)   { ExitOnFail(hr); ExitOnNull(ptr); }
#define ExitOnAnyFailure(hr, pErr)  { ExitOnFail(hr); if (FAILED(pErr->GetMajor())) goto Exit; }
#define SAFERELEASE(ptr)            { if (NULL != ptr) ptr->Release(); ptr = NULL; }
#define DELNULL(ptr)                { if (NULL != ptr) delete ptr; ptr = NULL; }

#define WAIT_FOR_KEY_OUT(hr) {\
    printf("\n\nHRESULT = %lu (0x%08x)\n", hr, hr);\
    printf("Press ENTER to continue ...\n");\
    getchar();\
}

#define WAIT_FOR_KEY() {\
    printf("\nPress ENTER to continue ...\n");\
    getchar();\
}

//Files

BSTR connStrCreate = NULL;

BSTR connStrSrc = NULL;
BSTR connStrDst = NULL;

BSTR connStrCompactin = NULL;
BSTR connStrCompactout = NULL; 

BSTR connStrRepairedin = NULL;
BSTR connStrRepairedout = NULL;

HRESULT GetInterfacePointers(
    ISSCEEngine   **ppEngine, 
    ISSCEError    **ppErr = NULL
)
{
    HRESULT hr = NOERROR;

    if (NULL != ppEngine)
    {
        *ppEngine = (ISSCEEngine *) NULL; 

        hr = CoCreateInstance(CLSID_Engine, NULL, 
            CLSCTX_INPROC_SERVER, IID_ISSCEEngine, (LPVOID *) ppEngine);

        ExitOnFailOrNull(hr, *ppEngine);
    }

    if (NULL != ppErr)
    {
        *ppErr = (ISSCEError *) NULL;

        hr = CoCreateInstance(CLSID_SSCEError, NULL, 
            CLSCTX_INPROC_SERVER, IID_ISSCEError, (LPVOID *) ppErr);

        ExitOnFailOrNull(hr, *ppErr);
    }

Exit:
    return hr;
}


int _tmain(int argc, _TCHAR* argv[])
{
    ISSCEEngine  *pEngine = NULL;
    ISSCEError   *pError = NULL;

    HRESULT hr = NOERROR;
BSTR connStrCreate = SysAllocString((const OLECHAR*)L"Data Source=C:\\created35.sdf; SSCE:Database Password='123'; ");

BSTR connStrSrc = SysAllocString((const OLECHAR*)L"Data Source=C:\\encrypted31.sdf; SSCE:Database Password='123' ;");
BSTR connStrDst = SysAllocString((const OLECHAR*)L"Data Source=C:\\31upgradedto35.sdf; SSCE:Database Password='123' ; SSCE:Database Password='123' ; ssce:encryption mode=' platform default';");

BSTR connStrCompactin = SysAllocString((const OLECHAR*)L"Data Source=C:\\encryptedC35.sdf; SSCE:Database Password='encrypt' ; ");
BSTR connStrCompactout = SysAllocString((const OLECHAR*)L"Data Source='C:\\35compacted.sdf'; SSCE:Database Password='123' ; SSCE:Database Password='123' ; ssce:encryption mode= ’platform default’;"); 

BSTR connStrRepairedin = SysAllocString((const OLECHAR*)L"Data Source=C:\\encryptedR35.sdf; SSCE:Database Password='encrypt'");
BSTR connStrRepairedout = SysAllocString((const OLECHAR*)L"Data Source=C:\\35repaired.sdf;  SSCE:Database Password='123' ; ssce:encryption mode=' platform default'; ");

//DeleteFile(L"c:\\created35.sdf");
//DeleteFile(L"c:\\encrypted31.sdf");
//DeleteFile(L"c:\\31upgradedto35.sdf");
//DeleteFile(L"c:\\encryptedC35.sdf");
//DeleteFile(L"c:\\35compacted.sdf");
//DeleteFile(L"c:\\encryptedR35.sdf");
//DeleteFile(L"c:\\35repaired.sdf");

    CoInitialize(NULL);

    hr = GetInterfacePointers(&pEngine, &pError);
ExitOnFail(hr);

// test create
//
hr = NOERROR;
hr=pEngine->CreateDatabase(connStrCreate);
printf("\n for create error=%lu",hr);

// test upgrade
// NOTE: you need a older ssce database for this - this wont work otherwise.
//
hr = NOERROR;
    hr = pEngine->UpgradeDatabase(connStrSrc, connStrDst);
printf("\n for upgrade error=%lu",hr);
    
// test compact
//
hr = NOERROR;
hr=pEngine->CreateDatabase(connStrCompactin);
printf("\n for create error=%lu",hr);

hr = NOERROR;
hr=pEngine->CompactDatabase(connStrCompactin,connStrCompactout);
printf("\n for compact error=%lu",hr);

// test repair
//
hr = NOERROR;
hr=pEngine->CreateDatabase(connStrRepairedin);
printf("\n for create error=%lu",hr);

hr = NOERROR;
hr=pEngine->Repair(connStrRepairedin,connStrRepairedout,RECOVERCORRUPTED);
printf("\n for repair error=%lu",hr);
    hr = NOERROR;

Exit:
    SysFreeString(connStrCreate);
    SysFreeString(connStrSrc);
    SysFreeString(connStrDst);
    SysFreeString(connStrCompactin);
    SysFreeString(connStrCompactout);
    SysFreeString(connStrRepairedin);
    SysFreeString(connStrRepairedout);
    CoUninitialize();
    WAIT_FOR_KEY_OUT(hr);
    return 0;
}

Im folgenden Beispiel wird dargestellt, wie eine Microsoft SQL Server Compact 4.0-Datenbank erstellt wird, bei der die Groß-/Kleinschreibung berücksichtigt wird. Zudem wird erläutert, wie die CompactDatabase-Methode (SQL Server Compact) zum Ändern der Groß-/Kleinschreibungseinstellung der Datenbank verwendet und wie eine reparierte Datenbank mit einer Sortierung, die Groß-/Kleinschreibung berücksichtigt, erstellt wird. Weitere Informationen zu SQL Server Compact-Datenbanken, bei denen die Groß-/Kleinschreibung beachtet wird, finden Sie unter Arbeiten mit Sortierungen (SQL Server Compact).

// The second example:
// ClientAgent2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

// Include OS Header files
//

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include<iostream>
// Include OS Header files
//
#include <sqlce_err.h>
#include <sqlce_oledb.h>
#include <sqlce_sync.h>

#define ExitOnFail(hr)              { if (FAILED(hr)) goto Exit; }
#define ExitOnNull(ptr)             { if (NULL == (ptr)) goto Exit; }
#define ExitOnFailOrNull(hr, ptr)   { ExitOnFail(hr); ExitOnNull(ptr); }
#define ExitOnAnyFailure(hr, pErr)  { ExitOnFail(hr); if (FAILED(pErr->GetMajor())) goto Exit; }
#define SAFERELEASE(ptr)            { if (NULL != ptr) ptr->Release(); ptr = NULL; }
#define DELNULL(ptr)                { if (NULL != ptr) delete ptr; ptr = NULL; }

#define WAIT_FOR_KEY_OUT(hr) {\
    printf("\n\nHRESULT = %lu (0x%08x)\n", hr, hr);\
    printf("Press ENTER to continue ...\n");\
    getchar();\
}

#define WAIT_FOR_KEY() {\
    printf("\nPress ENTER to continue ...\n");\
    getchar();\
}

//Files

BSTR connStrCreate = NULL;

BSTR connStrSrc = NULL;

BSTR connStrCompactin = NULL;
BSTR connStrCompactout = NULL; 

BSTR connStrRepairedin = NULL;
BSTR connStrRepairedout = NULL;

HRESULT GetInterfacePointers(
    ISSCEEngine   **ppEngine, 
    ISSCEError    **ppErr = NULL
)
{
    HRESULT hr = NOERROR;

    if (NULL != ppEngine)
    {
        *ppEngine = (ISSCEEngine *) NULL; 

        hr = CoCreateInstance(CLSID_Engine, NULL, 
            CLSCTX_INPROC_SERVER, IID_ISSCEEngine, (LPVOID *) ppEngine);

        ExitOnFailOrNull(hr, *ppEngine);
    }

    if (NULL != ppErr)
    {
        *ppErr = (ISSCEError *) NULL;

        hr = CoCreateInstance(CLSID_SSCEError, NULL, 
            CLSCTX_INPROC_SERVER, IID_ISSCEError, (LPVOID *) ppErr);

        ExitOnFailOrNull(hr, *ppErr);
    }

Exit:
    return hr;
}


int _tmain(int argc, _TCHAR* argv[])
{
    ISSCEEngine  *pEngine = NULL;
    ISSCEError   *pError = NULL;

    HRESULT hr = NOERROR;

BSTR connStrCreate = SysAllocString((const OLECHAR*)L"Data source=C:\\created35.sdf; SSCE:case sensitive=true; SSCE:Database Password='123'");

BSTR connStrCompactin = SysAllocString((const OLECHAR*)L"Data Source=C:\\compactIn35.sdf; SSCE:Database Password='123'");
BSTR connStrCompactout = SysAllocString((const OLECHAR*)L"Data Source='C:\\compactOut35.sdf'; SSCE:Database Password='123'; SSCE:case sensitive=true;"); 

BSTR connStrRepairedin = SysAllocString((const OLECHAR*)L"Data Source=C:\\repairIn35.sdf; SSCE:Database Password='123';");
BSTR connStrRepairedout = SysAllocString((const OLECHAR*)L"Data Source=C:\\repairOut35.sdf; SSCE:Database Password='123' ; SSCE:case sensitive=true;");

//DeleteFile(L"c:\\created35.sdf");
//DeleteFile(L"c:\\compactIn35.sdf");
//DeleteFile(L"c:\\compactOut35.sdf");
//DeleteFile(L"c:\\repairIn35.sdf");
//DeleteFile(L"c:\\repairOut35.sdf");

    CoInitialize(NULL);

    hr = GetInterfacePointers(&pEngine, &pError);
ExitOnFail(hr);

// test create
//
hr = NOERROR;
hr=pEngine->CreateDatabase(connStrCreate);
printf("\n for create error=%lu",hr);

// test compact
//
hr = NOERROR;
hr=pEngine->CreateDatabase(connStrCompactin);
printf("\n for create error=%lu",hr);

hr = NOERROR;
hr=pEngine->CompactDatabase(connStrCompactin,connStrCompactout);
printf("\n for compact error=%lu",hr);

// test repair
//
hr = NOERROR;
hr=pEngine->CreateDatabase(connStrRepairedin);
printf("\n for create error=%lu",hr);

hr = NOERROR;
hr=pEngine->Repair(connStrRepairedin,connStrRepairedout,RECOVERCORRUPTED);
printf("\n for repair error=%lu",hr);
    hr = NOERROR;

Exit:
    SysFreeString(connStrCreate);
    SysFreeString(connStrSrc);
    SysFreeString(connStrCompactin);
    SysFreeString(connStrCompactout);
    SysFreeString(connStrRepairedin);
    SysFreeString(connStrRepairedout);
    CoUninitialize();
    WAIT_FOR_KEY_OUT(hr);
    return 0;
}

Hinweise

Wichtig

Seit der Version SQL Server Compact 3.5 Service Pack 1 (SP1) werden auch Sortierungen mit Berücksichtigung der Groß-/Kleinschreibung unterstützt. Weitere Informationen finden Sie unter Arbeiten mit Sortierungen (SQL Server Compact).

In der folgenden Tabelle sind die in SQL Server Compact 4.0 unterstützten Verbindungseigenschaften aufgeführt. 

Eigenschaft

Beschreibung

data source

Dateipfad und Name der SQL Server Compact 4.0-Datenbank. Sie sollten keinen relativen, sondern den absoluten Pfad der Datenbankdatei angeben.

Hinweis   Eine Anwendung, die auf einem Desktopcomputer ausgeführt wird, kann keine Datenbankverbindung mit einer SDF-Datei auf einem Gerät herstellen. Ebenso kann eine Anwendung, die auf einem Gerät ausgeführt wird, keine Datenbankverbindung mit einer SDF-Datei auf einem Desktopcomputer herstellen.

ssce: case sensitive

Ein boolescher Wert, der festlegt, ob in der Datenbank die Groß-/Kleinschreibung berücksichtigt wird. Diese Eigenschaft muss auf true festgelegt werden, wenn die Groß-/Kleinschreibung berücksichtigt werden soll, oder auf false, wenn die Groß-/Kleinschreibung nicht berücksichtigt werden soll. Der Standardwert ist false.

HinweisHinweis
Diese Eigenschaft wurde mit der Version SQL Server Compact 4.0 SP1 eingeführt. Weitere Informationen finden Sie unter Arbeiten mit Sortierungen (SQL Server Compact).

ssce: database password

Das Datenbankkennwort, das bis zu 40 Zeichen lang sein kann. Wenn nichts anderes angegeben ist, wird in der Standardeinstellung kein Kennwort verwendet. Diese Eigenschaft ist erforderlich, wenn Sie Verschlüsselung für die Datenbank aktivieren möchten. Wenn Sie ein Kennwort angegeben haben, wird die Verschlüsselung für die Datenbank aktiviert.

ssce:encryption mode

oder

encryption mode

Die Werte für diese Eigenschaft lauten:

engine default

oder

platform default

ssce: max buffer size

Gibt den maximalen Speicherplatz (in KB) an, der von SQL Server Compact 4.0 verwendet werden kann, bevor Änderungen auf den Datenträger ausgegeben und dann aus dem Speicher gelöscht werden. Ist kein Wert angegeben, ist der Standardwert 640.

ssce: max database size

Die maximale Größe der Datenbank in MB. Ist kein Wert angegeben, ist der Standardwert 128.

ssce:mode

Der Modus, der verwendet werden soll, wenn Sie die Datenbankdatei öffnen. Die gültigen Werte finden Sie in der nächsten Tabelle. Ist kein Wert angegeben, ist der Standardwert Read/Write.

ssce: default lock timeout

Die Standardanzahl von Millisekunden, die eine Transaktion auf eine Sperre wartet. Der Standardwert ist 5000 Millisekunden für Desktopcomputer und 2000 Millisekunden für mobile Geräte, wenn nichts anderes angegeben wird.

ssce: default lock escalation

Die Anzahl von Sperren, die eine Transaktion abruft, bevor Sie die Ausweitung von einer Zeile auf eine Seite oder von einer Seite auf eine Tabelle versuchen. Ist kein Wert angegeben, ist der Standardwert 100.

ssce: flush interval

Gibt in Sekunden die Zeitspanne an, ab der alle Transaktionen, für die ein Commit ausgeführt wurde, auf den Datenträger ausgegeben und geleert werden. Ist kein Wert angegeben, ist der Standardwert 10.

ssce: autoshrink threshold

Der Prozentsatz an freiem Speicherplatz in der Datenbankdatei, der zulässig ist, bevor eine automatische Verkleinerung gestartet wird. Der Wert 100 deaktiviert die automatische Verkleinerung. Ist kein Wert angegeben, ist der Standardwert 60.

ssce: temp file directory

Der Speicherort der temporären Datenbank. Ist kein Wert angegeben, wird als Standardwert die Datenbank verwendet, die in der Datenquelleneigenschaft für temporäre Speicherung angegeben ist.

ssce: temp file max size

Die maximale Größe der temporären Datenbankdatei in MB. Ist kein Wert angegeben, ist der Standardwert 128.

locale identifier

Die Gebietsschema-ID (Locale ID - LCID), die mit der Datenbank verwendet werden soll.

In der folgenden Tabelle sind die gültigen Werte für die mode-Eigenschaft einer Verbindungszeichenfolge aufgeführt.

Wert

Definition

Read Write

Ermöglicht, dass mehrere Prozesse die Datenbank öffnen und ändern können. Dies ist die Standardeinstellung, wenn die mode-Eigenschaft nicht angegeben ist.

Read Only

Öffnet eine schreibgeschützte Kopie der Datenbank.

Exclusive

Verhindert, dass andere Prozesse die Datenbank öffnen oder ändern können.

Shared Read

Ermöglicht, dass andere Prozesse die Datenbank, solange Sie diese geöffnet haben, zwar lesen, aber nicht ändern können.

Die folgenden Regeln gelten für Verbindungszeichenfolgen:

  1. Leerzeichen, die nicht zu einem Wert gehören oder in Anführungszeichen stehen, werden ignoriert.

  2. Paare aus Schlüsselwort und Wert müssen durch ein Semikolon (;) voneinander getrennt sein. Wenn ein Semikolon Teil eines Werts ist, muss es ebenfalls in Anführungszeichen eingeschlossen werden.

  3. Es werden keine Escapesequenzen unterstützt.

  4. Der Werttyp ist nicht relevant.

  5. Für Namen wird die Groß-/Kleinschreibung nicht beachtet.

  6. Gibt es den Namen einer Eigenschaft mehrmals in der Verbindungszeichenfolge, wird der Wert verwendet, der der Eigenschaft bei deren letztem Vorkommen zugewiesen wurde.

  7. Ein Wert kann in einfache oder doppelte Anführungszeichen gesetzt werden; Beispiel: name='Wert' oder name="Wert". In einer Verbindungszeichenfolge können entweder einfache oder doppelte Anführungszeichen verwendet werden, indem das jeweils andere Begrenzungszeichen verwendet wird. In den folgenden Beispielen sind die Anführungszeichen in der jeweiligen Verbindungszeichenfolge in zulässiger Weise verwendet.

    "data source='MyDb.sdf'; ssce: mode=Exclusive;"
    'data source="MyDb.sdf"; ssce: mode=Exclusive;'
    
    • Die folgenden Beispiele sind jedoch nicht gültig:
    "data source="MyDb.sdf"; ssce: mode=Exclusive;"
    'data source='MyDb.sdf'; ssce: mode=Exclusive;'
    

Siehe auch

Andere Ressourcen

Programmierung mit dem Engine-Objekt (SQL Server Compact)