Skip to content

Commit 751899f

Browse files
committed
Add REPL sample
1 parent f79a65d commit 751899f

File tree

9 files changed

+968
-1
lines changed

9 files changed

+968
-1
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
*.o
22
*.o~
3+
Samples
4+
Samples.meta

Samples~/REPL.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "Gilzoide.SqliteNet.Samples.REPL",
3+
"rootNamespace": "",
4+
"references": [
5+
"Gilzoide.SqliteNet"
6+
],
7+
"includePlatforms": [],
8+
"excludePlatforms": [],
9+
"allowUnsafeCode": false,
10+
"overrideReferences": false,
11+
"precompiledReferences": [],
12+
"autoReferenced": false,
13+
"defineConstraints": [],
14+
"versionDefines": [],
15+
"noEngineReferences": false
16+
}

Samples~/REPL/Gilzoide.SqliteNet.Samples.REPL.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Samples~/REPL/SQLiteREPL.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System;
2+
using System.Text;
3+
using SQLite;
4+
using UnityEngine;
5+
using UnityEngine.UI;
6+
7+
namespace Gilzoide.SqliteNet.Samples.REPL
8+
{
9+
public class SQLiteREPL : MonoBehaviour
10+
{
11+
public string DbName = "SQLiteREPL.sqlite";
12+
public Text OutputText;
13+
14+
private SQLiteConnection _connection;
15+
16+
void Start()
17+
{
18+
_connection = new SQLiteConnection(DbName);
19+
}
20+
21+
void OnDestroy()
22+
{
23+
_connection?.Dispose();
24+
}
25+
26+
public void OnSubmitSQL(string sql)
27+
{
28+
DateTime timeBefore = DateTime.Now;
29+
try
30+
{
31+
using (var stmt = new SQLitePreparedStatement(_connection, sql))
32+
{
33+
var sb = new StringBuilder();
34+
sb.Append(string.Join("|", stmt.EnumerateColumnNames()));
35+
if (sb.Length > 0)
36+
{
37+
sb.Append('\n');
38+
for (int i = 0, count = sb.Length; i < count; i++)
39+
{
40+
sb.Append('-');
41+
}
42+
}
43+
while (true)
44+
{
45+
switch (stmt.Step())
46+
{
47+
case SQLite3.Result.Row:
48+
{
49+
sb.Append('\n');
50+
sb.Append(string.Join("|", stmt.EnumerateColumnsAsText()));
51+
break;
52+
}
53+
54+
case SQLite3.Result.Done:
55+
goto breakwhile;
56+
}
57+
}
58+
breakwhile:
59+
OutputText.text = sb.Length > 0 ? sb.ToString() : "OK";
60+
}
61+
}
62+
catch (SQLiteException ex)
63+
{
64+
OutputText.text = "Error: " + ex.Message;
65+
}
66+
67+
DateTime timeAfter = DateTime.Now;
68+
TimeSpan timeSpent = timeAfter - timeBefore;
69+
OutputText.text += $"\n\nTook: {timeSpent.TotalMilliseconds}ms";
70+
}
71+
}
72+
}

Samples~/REPL/SQLiteREPL.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)