You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+99-65Lines changed: 99 additions & 65 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,67 @@
1
1
2
2
# SQLitePCLRaw
3
3
4
-
SQLitePCLRaw is a Portable Class Library (PCL) for low-level (raw)
5
-
access to SQLite. License: Apache License v2.
4
+
SQLitePCLRaw is a .NET Portable Class Library (PCL) for low-level (raw)
5
+
access to SQLite.
6
6
7
-
# How the packaging works
7
+
This library is open source (Apache License v2) and has been downloaded
8
+
hundreds of millions of times on nuget.org.
9
+
10
+
My name is Eric Sink. I am:
11
+
12
+
- the maintainer of this library
13
+
- the founder of SourceGear, a small software company in Illinois
14
+
- part of the SQLite core team
15
+
16
+
You can email me at either eric@sourcegear.com or eric@sqlite.org
17
+
18
+
# Technical Support
19
+
20
+
If you need help using SQLite with .NET, you can post a question
21
+
here in this repo, and there is a chance that I or someone else
22
+
will answer it.
23
+
24
+
If you are interested in private technical support with more structure,
25
+
SourceGear provides technical support agreements at
26
+
various levels. Contact me for a price quote.
27
+
28
+
# SQLite builds
29
+
30
+
The SQLitePCLRaw.lib.e_sqlite3 package is published publicly on nuget.org
31
+
as part of this project. It contains builds of the native SQLite code library
32
+
for server platforms and with the most commonly used features enabled.
33
+
I update this package from time to time.
34
+
35
+
My company (SourceGear) operates a paid service at nuget.sourcegear.com
36
+
which provides various native SQLite builds which are
37
+
updated immediately after each SQLite release. These include regular
38
+
SQLite builds, or various options with encryption support. We can also provide
39
+
custom configurations.
40
+
41
+
If you are interested in SourceGear's SQLite build service, please
42
+
contact me for a price quote.
43
+
44
+
# Encryption support
45
+
46
+
I no longer publish encryption-enabled SQLite builds without cost.
47
+
48
+
My recommended solution for encryption support is the SQLite Encryption Extension (SEE), which is the official implementation from the SQLite team:
49
+
50
+
https://sqlite.org/com/see.html
51
+
52
+
The SEE is not open source -- a paid license is required. SourceGear's SQLite build service
53
+
provides SEE builds in the form of nuget packages.
54
+
55
+
The recommended way to use a crypto-enabled SQLite build is to name the shared library `e_sqlite3` and use the `SQLitePCLRaw.config.e_sqlite3` package.
56
+
Using this approach, you can use open source alternatives to SEE, including:
57
+
58
+
- SQLCipher (builds available for purchase from Zetetic)
59
+
- SQLite3 Multiple Ciphers (maintained by @utelle, builds available in SourceGear's SQLite build service)
60
+
61
+
# The structure of these packages
8
62
9
63
The main assembly is SQLitePCLRaw.core. A portable library project would
10
-
need to only take a dep on this one. All the other packages
64
+
need to only take a dependency on this one. All the other packages
11
65
deal with initialization and the question of which instance
12
66
of the native SQLite library is involved.
13
67
@@ -45,11 +99,6 @@ the form SQLitePCLRaw.provider.\*.
45
99
46
100
# Provider names
47
101
48
-
There is a `dynamic` provider which does not use a hard-coded
49
-
DllImport string. This one is the most difficult to use but offers
50
-
the most control. It can be used to load a custom-built native
51
-
SQLite library.
52
-
53
102
The DllImport-based providers are named for the exact string which is used
54
103
for DllImport (pinvoke).
55
104
@@ -70,13 +119,15 @@ So, a provider where all the DllImport attributes were
70
119
using "foo", would have "foo" in its package id and
71
120
in its class name.
72
121
122
+
There is also a `dynamic` provider which does not use a hard-coded
123
+
DllImport string. This one is the most difficult to use but can
124
+
support advanced use cases where the loading decision needs
125
+
to be made at runtime.
126
+
73
127
# Included providers
74
128
75
129
SQLitePCLRaw includes several different providers. Examples:
76
130
77
-
- "dynamic" -- Uses dynamic loading of the native library
78
-
instead of DllImport attributes.
79
-
80
131
- "e\_sqlite3" -- This is the name of all SQLite builds provided
81
132
as part of this project.
82
133
@@ -90,7 +141,11 @@ from Zetetic.
90
141
- "winsqlite3" -- Matches the name of the library provided by
91
142
recent builds of Windows.
92
143
93
-
# SQLitePCLRaw.lib.e\_sqlite3 packages
144
+
- "dynamic" -- Uses dynamic loading of the native library
145
+
instead of DllImport attributes. This can be used to support
146
+
advanced use cases.
147
+
148
+
# SQLitePCLRaw.lib.e\_sqlite3
94
149
95
150
A provider is the bridge between the core assembly and the native
96
151
code, but the provider does not contain the native code itself.
@@ -116,49 +171,52 @@ packages:
116
171
- SQLitePCLRaw.core
117
172
- SQLitePCLRaw.provider.whatever
118
173
119
-
And in many cases one of these as well:
174
+
And in many cases, you also need a package containing the native SQLite library itself. For example:
120
175
121
-
- SQLitePCLRaw.lib.whatever
176
+
- SQLitePCLRaw.lib.e_sqlite3
122
177
123
-
And in your platform-specific code, you need to call:
178
+
Then, in your platform-specific code, you need to call:
0 commit comments