Freigeben über


CreateDatabase-Methode (SQL Server Compact)

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

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 Microsoft SQL Server Compact 3.5-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 3.5-Datenbank, in der unter Berücksichtigung der Groß-/Kleinschreibung sortiert wird, erstellt, komprimiert und repariert werden kann. Weitere Informationen über SQL Server Compact-Datenbanken, in denen Groß-/Kleinschreibung berücksichtigt 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:encrypt database='true';  SSCE:Database Password='123' ; ssce:encryption mode='ppc2003 compatibility';");

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:encrypt database='true';  SSCE:Database Password='123' ; ssce:encryption mode='ppc2003 compatibility';"); 

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='ppc2003 compatibility'; ");

//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 3.5-Datenbank erstellt wird, in der Groß-/Kleinschreibung berücksichtigt wird, wie CompactDatabase-Methode (SQL Server Compact) zum Ändern der Einstellungen der Datenbank zur Berücksichtigung der Groß-/Kleinschreibung verwendet wird und wie eine reparierte Datenbank erstellt wird, in der Groß-/Kleinschreibung bei der Sortierung berücksichtigt wird. Weitere Informationen über SQL Server Compact-Datenbanken, in denen Groß-/Kleinschreibung berücksichtigt 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

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

Eigenschaft

Beschreibung

data source

Dateipfad und Name der SQL Server Compact 3.5-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.

ms173396.note(de-de,SQL.100).gifHinweis:
Diese Eigenschaft wurde mit der Version SQL Server Compact 3.5 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 Verschlüsselung für die Datenbank aktiviert.

ssce: encrypt database

Ein boolescher Wert, der festlegt, ob die Datenbank verschlüsselt wird. Diese Eigenschaft muss auf TRUE festgelegt werden, wenn die Verschlüsselung aktiviert werden soll, oder auf FALSE, wenn keine Verschlüsselung erfolgen soll. Ist kein Wert angegeben, ist der Standardwert FALSE. Wenn Sie die Verschlüsselung aktivieren, müssen Sie mit der Eigenschaft für Kennwörter ein Kennwort angeben. Wenn Sie ein Kennwort angegeben haben, wird die Verschlüsselung automatisch aktiviert. Es spielt dann keine Rolle, auf welchen Wert Sie diese Eigenschaft festgelegt haben.

ms173396.note(de-de,SQL.100).gifHinweis:
Die encrypt-Eigenschaft wird in einer späteren Version veraltet sein. Die Eigenschaft wurde in SQL Server Compact 3.5 zum Zweck der Abwärtskompatibilität beibehalten.

ssce:encryption mode

oder

encryption mode

Die Werte für diese Eigenschaft lauten:

engine default

oder

platform default

oder

ppc2003 compatibility

Die Standardeinstellung ist platform default.

ssce: max buffer size

Der größtmögliche Arbeitsspeicher (in KB), den SQL Server Compact 3.5 verwenden 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 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)

Hilfe und Informationen

Informationsquellen (SQL Server Compact 3.5 Service Pack 1)