Advertisement
kronic

Untitled

Nov 11th, 2016
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.58 KB | None | 0 0
  1. using System;
  2. using System.Data.SQLite;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Threading;
  6. using System.Threading.Tasks;
  7.  
  8. namespace ConsoleApplication1
  9. {
  10.     internal class Program
  11.     {
  12.         /// <summary>
  13.         ///     The main entry point for the application.
  14.         /// </summary>
  15.         [STAThread]
  16.         private static void Main()
  17.         {
  18.             File.Delete("test.db3");
  19.             //Thread.Sleep(20000);
  20.             var cs = "data source=test.db3;";
  21.             var sqLiteConnectionStringBuilder = new SQLiteConnectionStringBuilder(cs) { JournalMode = SQLiteJournalModeEnum.Wal };
  22.             cs = sqLiteConnectionStringBuilder.ToString();
  23.             var path = Environment.Is64BitProcess ? "x64" : "x86";
  24.             var dllFullFileName = Path.Combine(path, "SQLite.Interop.dll");
  25.             using (var connection = new SQLiteConnection(cs))
  26.             {
  27.                 connection.Open();
  28.                 connection.EnableExtensions(true);
  29.                 connection.LoadExtension(dllFullFileName, "sqlite3_fts5_init");
  30.                 var extPath = Path.Combine(path, "stemmer5.dll");
  31.                 connection.LoadExtension(extPath);
  32.                 connection.EnableExtensions(false);
  33.                 using (var command = connection.CreateCommand())
  34.                 {
  35.                     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')";
  36.                     command.ExecuteScalar();
  37.                 }
  38.             }
  39.             Console.WriteLine("start");
  40.             try
  41.             {
  42.                 var test1 = Test1();
  43.                 var test = Test();
  44.                 Task.WaitAll(test, test1);
  45.                 Console.WriteLine("end");
  46.                 Console.ReadKey();
  47.             }
  48.             catch(Exception)
  49.             {
  50.                 throw;
  51.             }
  52.         }
  53.  
  54.         private static async Task Test()
  55.         {
  56.             try
  57.             {
  58.                 foreach (var VARIABLE in Enumerable.Range(0, 20))
  59.                 {
  60.                     var cs = "data source=test.db3;";
  61.                     var sqLiteConnectionStringBuilder = new SQLiteConnectionStringBuilder(cs) {JournalMode = SQLiteJournalModeEnum.Wal};
  62.                     cs = sqLiteConnectionStringBuilder.ToString();
  63.                     var path = Environment.Is64BitProcess ? "x64" : "x86";
  64.                     var dllFullFileName = Path.Combine(path, "SQLite.Interop.dll");
  65.  
  66.                     using (var connection = new SQLiteConnection(cs))
  67.                     {
  68.                         await connection.OpenAsync().ConfigureAwait(false);
  69.                         connection.EnableExtensions(true);
  70.                         connection.LoadExtension(dllFullFileName, "sqlite3_fts5_init");
  71.                         var extPath = Path.Combine(path, "stemmer5.dll");
  72.                         connection.LoadExtension(extPath);
  73.                         connection.EnableExtensions(false);
  74.                         using (var command = connection.CreateCommand())
  75.                         {
  76.                             command.CommandText = "INSERT INTO TEST VALUES(@a, @b)";
  77.                             var parameter = command.CreateParameter();
  78.                             parameter.ParameterName = "@a";
  79.                             var parameter1 = command.CreateParameter();
  80.                             parameter1.ParameterName = "@b";
  81.                             command.Parameters.AddRange(new[] {parameter, parameter1});
  82.                             using (var transaction = connection.BeginTransaction())
  83.                             {
  84.                                 foreach (var i in Enumerable.Range(0, 10000))
  85.                                 {
  86.                                     parameter.Value = i;
  87.                                     parameter1.Value = i + i;
  88.                                     await command.ExecuteScalarAsync().ConfigureAwait(false);
  89.                                 }
  90.                                 transaction.Commit();
  91.                             }
  92.                         }
  93.                     }
  94.                 }
  95.             }
  96.             catch(Exception ex)
  97.             {
  98.                 Console.WriteLine(ex);
  99.             }
  100.         }
  101.  
  102.         private static async Task Test1()
  103.         {
  104.             try
  105.             {
  106.                 await Task.Delay(1000).ConfigureAwait(false);
  107.                 var cs = "data source=test.db3;";
  108.                 var sqLiteConnectionStringBuilder = new SQLiteConnectionStringBuilder(cs) {JournalMode = SQLiteJournalModeEnum.Wal};
  109.                 cs = sqLiteConnectionStringBuilder.ToString();
  110.                 var path = Environment.Is64BitProcess ? "x64" : "x86";
  111.                 var dllFullFileName = Path.Combine(path, "SQLite.Interop.dll");
  112.                 foreach (var i in Enumerable.Range(0, 600))
  113.                 {
  114.                     using (var connection = new SQLiteConnection(cs))
  115.                     {
  116.                         await connection.OpenAsync().ConfigureAwait(false);
  117.                         connection.EnableExtensions(true);
  118.                         connection.LoadExtension(dllFullFileName, "sqlite3_fts5_init");
  119.                         var extPath = Path.Combine(path, "stemmer5.dll");
  120.                         connection.LoadExtension(extPath);
  121.                         connection.EnableExtensions(false);
  122.                         using (var command = connection.CreateCommand())
  123.                         {
  124.                             command.CommandText = "SELECT * FROM test";
  125.                             using (var dataReader = await command.ExecuteReaderAsync().ConfigureAwait(false))
  126.                             {
  127.                                 while(await dataReader.ReadAsync().ConfigureAwait(false))
  128.                                 {
  129.                                     var l = await dataReader.GetFieldValueAsync<long>(0).ConfigureAwait(false);
  130.                                     var l1 = await dataReader.GetFieldValueAsync<long>(0).ConfigureAwait(false);
  131.                                 }
  132.                             }
  133.                         }
  134.                     }
  135.                 }
  136.             }
  137.             catch(Exception ex)
  138.             {
  139.                 Console.WriteLine(ex);
  140.             }
  141.         }
  142.     }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement