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.
Hinweis:
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.
Hinweis:
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:
Leerzeichen, die nicht zu einem Wert gehören oder in Anführungszeichen stehen, werden ignoriert.
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.
Es werden keine Escapesequenzen unterstützt.
Der Werttyp ist nicht relevant.
Für Namen wird die Groß-/Kleinschreibung nicht beachtet.
Gibt es den Namen einer Eigenschaft mehrmals in der Verbindungszeichenfolge, wird der Wert verwendet, der der Eigenschaft bei deren letztem Vorkommen zugewiesen wurde.
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)