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
SQLitePCLRaw is a Portable Class Library (PCL) for low-level (raw)
5
5
access to SQLite. License: Apache License v2.
6
6
7
-
# Version 2.0
7
+
# How you can support this project
8
8
9
-
SQLitePCLRaw 2.0 is a major release. See [the release notes](v2.md)
10
-
for more information.
9
+
In the .NET ecosystem, SQLitePCLRaw is very popular. According to nuget.org, it has been downloaded hundreds of millions of times.
11
10
12
-
# Compatibility
11
+
Maintaining this package is a non-trivial effort, and I am asking the .NET community to support that effort. Here are three ways you can do that:
13
12
14
-
As of version 2.0, SQLitePCLRaw requires NetStandard2.0:
13
+
1. Send me money
14
+
2. Do business with my company
15
+
3. Do me a favor
15
16
16
-
- Xamarin.Android
17
-
- Xamarin.iOS
18
-
- UWP
19
-
- .NET Framework 4.6.1 or higher, preferably 4.7.2
20
-
- Linux with Mono
21
-
- MacOS with Mono
22
-
- .NET Core 3.1, .NET 5.x and up, etc
23
-
- NetStandard 2.0
17
+
## (1) Send me money
18
+
19
+
To support this project financially, you can use GitHub Sponsors:
20
+
21
+
https://github.com/sponsors/ericsink
22
+
23
+
Any amount is accepted and appreciated.
24
+
25
+
## (2) Do business with my company
26
+
27
+
My business partner (Corey Steffen) and I own a software development company called SourceGear. Our team does software development projects for other companies, including server side, web applications, and mobile apps. You can support my efforts by engaging with our company.
28
+
29
+
https://services.sourcegear.com/
30
+
31
+
We use a variety of technologies depending on the needs of the customer, but we are obviously adept in the use of .NET and SQLite. Please contact me to discuss how our team could be of service.
32
+
33
+
## (3) Do me a favor
34
+
35
+
Want to support my efforts without using money? Do me a favor by telling people about my word games. :-)
36
+
37
+
(a) Word Zero -- a two-person game similar to Scrabble. Currently iOS-only, available in the App Store. Options for both free and paid play.
38
+
39
+
(b) Word Box -- a free daily word puzzle, available at https://wordbox.game/
40
+
41
+
I am always wanting to attract more players, but purchasing ads for these kinds of games is very expensive. You would be doing me a favor by spreading the word. For example, Word Box has an easy way to post your score for the day on social media.
42
+
43
+
And if you choose this "Do me a favor" option, make sure to let me know, so I can thank you.
24
44
25
45
# How the packaging works
26
46
@@ -65,54 +85,6 @@ The SQLitePCLRaw.core package contains no providers.
65
85
All the various providers are in packages with ids of
66
86
the form SQLitePCLRaw.provider.\*.
67
87
68
-
# Provider names
69
-
70
-
There is a `dynamic` provider which does not use a hard-coded
71
-
DllImport string. This one is used as often as possible.
72
-
73
-
The DllImport-based providers are named for the exact string which is used
74
-
for DllImport (pinvoke).
75
-
76
-
For example:
77
-
78
-
[DllImport("foo")]
79
-
public static extern int whatever();
80
-
81
-
This pinvoke will look for a library called "foo".
82
-
83
-
- On Windows, that means "foo.dll".
84
-
- On Unix, "libfoo.so"
85
-
- On MacOS, "libfoo.dylib"
86
-
87
-
(The actual rules are more complicated than this.)
88
-
89
-
So, a provider where all the DllImport attributes were
90
-
using "foo", would have "foo" in its package id and
91
-
in its class name.
92
-
93
-
# Included providers
94
-
95
-
SQLitePCLRaw includes the following providers:
96
-
97
-
- "dynamic" -- Uses dynamic loading of the native library
98
-
instead of DllImport attributes.
99
-
100
-
- "e\_sqlite3" -- This is the name of all SQLite builds provided
101
-
as part of this project.
102
-
103
-
- "e\_sqlcipher" -- This is the name of the unofficial and unsupported
104
-
SQLCipher builds which are provided as part of this project.
105
-
106
-
- "sqlite3" -- This matches the name of the system-provided SQLite
107
-
on iOS (which is fine), and Android (which is not allowed).
108
-
And it matches the official name of builds provided at sqlite.org.
109
-
110
-
- "sqlcipher" -- Intended to be used for official SQLCipher builds
111
-
from Zetetic.
112
-
113
-
- "winsqlite3" -- Matches the name of the library provided by
114
-
recent builds of Windows 10.
115
-
116
88
# SQLitePCLRaw.lib
117
89
118
90
A provider is the bridge between the core assembly and the native
@@ -138,9 +110,13 @@ and you want to use the same recent version of SQLite on each platform,
138
110
e\_sqlite3 should be a good choice.
139
111
140
112
- "e\_sqlcipher" -- These are unofficial and unsupported builds
141
-
of the open source SQLCipher code.
113
+
of the open source SQLCipher code. You should not use these packages.
114
+
You should buy official supported builds from Zetetic.
115
+
116
+
- "e\_sqlite3mc" -- These are builds of SQLite3MultipleCiphers, another
117
+
library which adds encryption capabilities to SQLite.
142
118
143
-
The build scripts for both of the above are in the ericsink/cb repo.
119
+
The build scripts for all of the above are in the ericsink/cb repo.
144
120
145
121
# A trio of packages
146
122
@@ -190,21 +166,6 @@ SQLite is used.
190
166
The purpose of the bundles is to make things easier by taking
191
167
away flexibility and control. You don't have to use them.
192
168
193
-
## How do I build this?
194
-
195
-
#### Requirements
196
-
197
-
* Install the `t4` cli tool with `dotnet tool install --global dotnet-t4`
198
-
* Clone the [cb](https://github.com/ericsink/cb) repository in the same directory as you cloned this `SQLitePCL.raw` repository
199
-
* Make sure that the *Mobile development with.NET* workload [is installed](https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio)
200
-
201
-
Then, from a Developer Command Prompt for Visual Studio 2017 or 2019:
202
-
203
-
```
204
-
cd build
205
-
dotnet run
206
-
```
207
-
208
169
## Can this library be used to write a mobile app?
209
170
210
171
Technically, yes, but that's not what you want to do.
@@ -269,53 +230,3 @@ producing a pull request. The changes I've made are so extensive that I do not
269
230
plan to submit a pull request unless one is requested. I plan to maintain this
270
231
code going forward.
271
232
272
-
## What is SQLitePCL.Ugly?
273
-
274
-
Well, it's a bunch of extension methods, a
275
-
layer that provides method call syntax.
276
-
It also switches the error handling model from integer return
277
-
codes to exception throwing.
278
-
279
-
For example, the sqlite3\_stmt class represents a statement
280
-
handle, but you still have to do things like this:
281
-
282
-
int rc;
283
-
284
-
sqlite3 db;
285
-
rc = raw.sqlite3_open(":memory:", out db);
286
-
if (rc != raw.SQLITE_OK)
287
-
{
288
-
error
289
-
}
290
-
sqlite3_stmt stmt;
291
-
rc = raw.sqlite3_prepare(db, "CREATE TABLE foo (x int)", out stmt);
0 commit comments