Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Data.SQLite;
- using System.IO;
- using System.Linq;
- using System.Threading;
- using System.Threading.Tasks;
- namespace ConsoleApplication1
- {
- internal class Program
- {
- /// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- private static void Main()
- {
- File.Delete("test.db3");
- //Thread.Sleep(20000);
- var cs = "data source=test.db3;";
- var sqLiteConnectionStringBuilder = new SQLiteConnectionStringBuilder(cs) { JournalMode = SQLiteJournalModeEnum.Wal };
- cs = sqLiteConnectionStringBuilder.ToString();
- var path = Environment.Is64BitProcess ? "x64" : "x86";
- var dllFullFileName = Path.Combine(path, "SQLite.Interop.dll");
- using (var connection = new SQLiteConnection(cs))
- {
- connection.Open();
- connection.EnableExtensions(true);
- connection.LoadExtension(dllFullFileName, "sqlite3_fts5_init");
- var extPath = Path.Combine(path, "stemmer5.dll");
- connection.LoadExtension(extPath);
- connection.EnableExtensions(false);
- using (var command = connection.CreateCommand())
- {
- command.CommandText = "CREATE VIRTUAL TABLE IF NOT EXISTS test USING FTS5(a,b,tokenize='snowball russian english', prefix = '1 2 3 4 5 6 7')";
- command.ExecuteScalar();
- }
- }
- Console.WriteLine("start");
- try
- {
- var test1 = Test1();
- var test = Test();
- Task.WaitAll(test, test1);
- Console.WriteLine("end");
- Console.ReadKey();
- }
- catch(Exception)
- {
- throw;
- }
- }
- private static async Task Test()
- {
- try
- {
- foreach (var VARIABLE in Enumerable.Range(0, 20))
- {
- var cs = "data source=test.db3;";
- var sqLiteConnectionStringBuilder = new SQLiteConnectionStringBuilder(cs) {JournalMode = SQLiteJournalModeEnum.Wal};
- cs = sqLiteConnectionStringBuilder.ToString();
- var path = Environment.Is64BitProcess ? "x64" : "x86";
- var dllFullFileName = Path.Combine(path, "SQLite.Interop.dll");
- using (var connection = new SQLiteConnection(cs))
- {
- await connection.OpenAsync().ConfigureAwait(false);
- connection.EnableExtensions(true);
- connection.LoadExtension(dllFullFileName, "sqlite3_fts5_init");
- var extPath = Path.Combine(path, "stemmer5.dll");
- connection.LoadExtension(extPath);
- connection.EnableExtensions(false);
- using (var command = connection.CreateCommand())
- {
- command.CommandText = "INSERT INTO TEST VALUES(@a, @b)";
- var parameter = command.CreateParameter();
- parameter.ParameterName = "@a";
- var parameter1 = command.CreateParameter();
- parameter1.ParameterName = "@b";
- command.Parameters.AddRange(new[] {parameter, parameter1});
- using (var transaction = connection.BeginTransaction())
- {
- foreach (var i in Enumerable.Range(0, 10000))
- {
- parameter.Value = i;
- parameter1.Value = i + i;
- await command.ExecuteScalarAsync().ConfigureAwait(false);
- }
- transaction.Commit();
- }
- }
- }
- }
- }
- catch(Exception ex)
- {
- Console.WriteLine(ex);
- }
- }
- private static async Task Test1()
- {
- try
- {
- await Task.Delay(1000).ConfigureAwait(false);
- var cs = "data source=test.db3;";
- var sqLiteConnectionStringBuilder = new SQLiteConnectionStringBuilder(cs) {JournalMode = SQLiteJournalModeEnum.Wal};
- cs = sqLiteConnectionStringBuilder.ToString();
- var path = Environment.Is64BitProcess ? "x64" : "x86";
- var dllFullFileName = Path.Combine(path, "SQLite.Interop.dll");
- foreach (var i in Enumerable.Range(0, 600))
- {
- using (var connection = new SQLiteConnection(cs))
- {
- await connection.OpenAsync().ConfigureAwait(false);
- connection.EnableExtensions(true);
- connection.LoadExtension(dllFullFileName, "sqlite3_fts5_init");
- var extPath = Path.Combine(path, "stemmer5.dll");
- connection.LoadExtension(extPath);
- connection.EnableExtensions(false);
- using (var command = connection.CreateCommand())
- {
- command.CommandText = "SELECT * FROM test";
- using (var dataReader = await command.ExecuteReaderAsync().ConfigureAwait(false))
- {
- while(await dataReader.ReadAsync().ConfigureAwait(false))
- {
- var l = await dataReader.GetFieldValueAsync<long>(0).ConfigureAwait(false);
- var l1 = await dataReader.GetFieldValueAsync<long>(0).ConfigureAwait(false);
- }
- }
- }
- }
- }
- }
- catch(Exception ex)
- {
- Console.WriteLine(ex);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement