Skip to content

Commit 75275e6

Browse files
committed
updates to the README
1 parent be29170 commit 75275e6

File tree

1 file changed

+39
-128
lines changed

1 file changed

+39
-128
lines changed

README.md

Lines changed: 39 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,43 @@
44
SQLitePCLRaw is a Portable Class Library (PCL) for low-level (raw)
55
access to SQLite. License: Apache License v2.
66

7-
# Version 2.0
7+
# How you can support this project
88

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.
1110

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:
1312

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
1516

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.
2444

2545
# How the packaging works
2646

@@ -65,54 +85,6 @@ The SQLitePCLRaw.core package contains no providers.
6585
All the various providers are in packages with ids of
6686
the form SQLitePCLRaw.provider.\*.
6787

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-
11688
# SQLitePCLRaw.lib
11789

11890
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,
138110
e\_sqlite3 should be a good choice.
139111

140112
- "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.
142118

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.
144120

145121
# A trio of packages
146122

@@ -190,21 +166,6 @@ SQLite is used.
190166
The purpose of the bundles is to make things easier by taking
191167
away flexibility and control. You don't have to use them.
192168

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-
208169
## Can this library be used to write a mobile app?
209170

210171
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
269230
plan to submit a pull request unless one is requested. I plan to maintain this
270231
code going forward.
271232

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);
292-
if (rc != raw.SQLITE_OK)
293-
{
294-
error
295-
}
296-
rc = raw.sqlite3_step(stmt);
297-
if (rc == raw.SQLITE_DONE)
298-
{
299-
whatever
300-
}
301-
else
302-
{
303-
error
304-
}
305-
raw.sqlite3_finalize(stmt);
306-
307-
The Ugly layer allows me to do things like this:
308-
309-
using (sqlite3 db = ugly.open(":memory:"))
310-
{
311-
sqlite3_stmt stmt = db.prepare("CREATE TABLE foo (x int)");
312-
stmt.step();
313-
}
314-
315-
This exception-throwing wrapper exists so that I can have something
316-
easier against which to write tests. It retains all the "lower-case
317-
and underscores" ugliness of the layer(s) below.
318-
It does not do things "The C# Way".
319-
As such, this is not
320-
a wrapper intended for public consumption.
321-

0 commit comments

Comments
 (0)