System.Data.SQLite
Check-in [8848fb5ed8]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:1.0.55.0
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | sourceforge
Files: files | file ages | folders
SHA1: 8848fb5ed8a4ad43bb7e8e74eb26f73f6013b02c
User & Date: rmsimpson 2008-08-06 21:49:08
Context
2008-08-08
05:42
1.0.56.0 beta check-in: 85ed84191d user: rmsimpson tags: sourceforge
2008-08-06
21:49
1.0.55.0 check-in: 8848fb5ed8 user: rmsimpson tags: sourceforge
21:48
3.6.1 debug sources check-in: add0673a62 user: rmsimpson tags: sourceforge
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to Doc/Extra/dbfactorysupport.html.

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<configuration>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" 
           description=".Net Framework Data Provider for SQLite"
           type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,
                 Version=1.0.54.0, Culture=neutral,
                 PublicKeyToken=db937bc2d44ff139"/>
    </DbProviderFactories>
  </system.data>
</configuration>
</pre>
      </div>
      <p>







|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
&lt;configuration&gt;
  &lt;system.data&gt;
    &lt;DbProviderFactories&gt;
      &lt;remove invariant="System.Data.SQLite"/&gt;
      &lt;add name="SQLite Data Provider" invariant="System.Data.SQLite" 
           description=".Net Framework Data Provider for SQLite"
           type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,
                 Version=1.0.55.0, Culture=neutral,
                 PublicKeyToken=db937bc2d44ff139"/&gt;
    &lt;/DbProviderFactories&gt;
  &lt;/system.data&gt;
&lt;/configuration&gt;
</pre>
      </div>
      <p>

Changes to Doc/Extra/lang_expr.html.

1
2
3
4
5
6
7






8
9
10
11
12
13
14
...
355
356
357
358
359
360
361
362
363
364
365
366
367
368
































































369
370
371
372
373




















































374
375
376
377
378
379
380
...
392
393
394
395
396
397
398












399
400
401
402
403
404
405
...
424
425
426
427
428
429
430












431
432
433
434
435
436
437
...
456
457
458
459
460
461
462








































463
464
465
466
467
468
469
470
471
472
473
474






475
476
477
478
479
480


















481
482
483
484
485
486
487
488














489
490
491
492
493
494
495
496
497
498
499
500
501



















502
503
504
505
506
507
508
509
510
511
512












513
514
515
516
517
518
519
...
561
562
563
564
565
566
567






568
569
570
571
572
573
574












575
576
577
578
579
580
581
582













583
584
585
586
587
588
589
...
600
601
602
603
604
605
606






607
608
609
610
611
612
613
614
615
616
617
618
619
<html dir="LTR" xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:ndoc="urn:ndoc-preprocess">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
    <title>expression</title>
    <link rel="stylesheet" type="text/css" href="ndoc.css"> </link>
    <link rel="stylesheet" type="text/css" href="user.css"> </link>
    <script type="text/javascript" src="ndoc.js"> </script>






  </head>
  <body style="display: none;">
    <input type="hidden" id="userDataCache" class="userDataStyle" />
    <input type="hidden" id="hiddenScrollOffset" />
    <img id="dropDownImage" style="display:none; height:0; width:0;" src="drpdown.gif" />
    <img id="dropDownHoverImage" style="display:none; height:0; width:0;" src="drpdown_orange.gif" />
    <img id="collapseImage" style="display:none; height:0; width:0;" src="collapse.gif" />
................................................................................
      <p>
        The core functions shown below are available by default. Additional functions may
        be written in C and added to the database engine using the <a href="capi3ref.html#cfunc">
          sqlite3_create_function()</a> API.</p>
      <p>
        <table border="0" cellpadding="10">
          <tr>
            <td align="right" valign="top" width="120">
              abs(<i>X</i>)</td>
            <td valign="top">
              Return the absolute value of argument <i>X</i>.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
































































              coalesce(<i>X</i>,<i>Y</i>,...)</td>
            <td valign="top">
              Return a copy of the first non-NULL argument. If all arguments are NULL then NULL
              is returned. There must be at least 2 arguments.</td>
          </tr>




















































          <tr>
            <a name="globFunc"></a>
            <td align="right" width="1%" nowrap>
              glob(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              This function is used to implement the "<b>X GLOB Y</b>" syntax of SQLite. The <a
                href="capi3ref.html#sqlite3_create_function">sqlite3_create_function()</a> interface
................................................................................
            <td align="right" width="1%" nowrap>
              last_insert_rowid()</td>
            <td valign="top">
              Return the ROWID of the last row insert from this connection to the database. This
              is the same value that would be returned from the <b>sqlite_last_insert_rowid()</b>
              API function.</td>
          </tr>












          <tr>
            <td align="right" width="1%" nowrap>
              length(<i>X</i>)</td>
            <td valign="top">
              Return the string length of <i>X</i> in characters. If SQLite is configured to support
              UTF-8, then the number of UTF-8 characters is returned, not the number of bytes.</td>
          </tr>
................................................................................
            <td valign="top">
              Load SQLite extensions out of the shared library file named <i>X</i> using the entry
              point <i>Y</i>. The result is a NULL. If <i>Y</i> is omitted then the default entry
              point of <b>sqlite3_extension_init</b> is used. This function raises an exception
              if the extension fails to load or initialize correctly.
            </td>
          </tr>












          <tr>
            <td align="right" width="1%" nowrap>
              lower(<i>X</i>)</td>
            <td valign="top">
              Return a copy of string <i>X</i> will all characters converted to lower case. The
              C library <b>tolower()</b> routine is used for the conversion, which means that
              this function might not work correctly on UTF-8 characters.</td>
................................................................................
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              nullif(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Return the first argument if the arguments are different, otherwise return NULL.</td>
          </tr>








































          <tr>
            <td align="right" width="1%" nowrap>
              quote(<i>X</i>)</td>
            <td valign="top">
              This routine returns a string which is the value of its argument suitable for inclusion
              into another SQL statement. Strings are surrounded by single-quotes with escapes
              on interior quotes as needed. BLOBs are encoded as hexadecimal literals. The current
              implementation of
          VACUUM uses this function. The function is also useful when writing
              triggers to implement undo/redo functionality.
            </td>
          </tr>






          <tr>
            <td align="right" width="1%" nowrap>
              random(*)</td>
            <td valign="top">
              Return a pseudo-random integer between -9223372036854775808 and +9223372036854775807.</td>
          </tr>


















          <tr>
            <td align="right" width="1%" nowrap>
              round(<i>X</i>)<br />
              round(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Round off the number <i>X</i> to <i>Y</i> digits to the right of the decimal point.
              If the <i>Y</i> argument is omitted, 0 is assumed.</td>
          </tr>














          <tr>
            <td align="right" width="1%" nowrap>
              soundex(<i>X</i>)</td>
            <td valign="top">
              Compute the soundex encoding of the string <i>X</i>. The string "?000" is returned
              if the argument is NULL. This function is omitted from SQLite by default. It is
              only available the -DSQLITE_SOUNDEX=1 compiler option is used when SQLite is built.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              sqlite_version(*)</td>
            <td valign="top">
              Return the version string for the SQLite library that is running. Example: "2.8.0"</td>



















          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              substr(<i>X</i>,<i>Y</i>,<i>Z</i>)</td>
            <td valign="top">
              Return a substring of input string <i>X</i> that begins with the <i>Y</i>-th character
              and which is <i>Z</i> characters long. The left-most character of <i>X</i> is number
              1. If <i>Y</i> is negative the the first character of the substring is found by
              counting from the right rather than the left. If SQLite is configured to support
              UTF-8, then characters indices refer to actual UTF-8 characters, not bytes.</td>
          </tr>












          <tr>
            <td align="right" width="1%" nowrap>
              typeof(<i>X</i>)</td>
            <td valign="top">
              Return the type of the expression <i>X</i>. The only return values are "null", "integer",
              "real", "text", and "blob".
        SQLite's type handling is explained in <a href="http://www.sqlite.org/datatype3.html">
................................................................................
              count(<i>X</i>)<br />
              count(*)</td>
            <td valign="top">
              The first form return a count of the number of times that <i>X</i> is not NULL in
              a group. The second form (with no argument) returns the total number of rows in
              the group.</td>
          </tr>






          <tr>
            <td align="right" width="1%" nowrap>
              max(<i>X</i>)</td>
            <td valign="top">
              Return the maximum value of all values in the group. The usual sort order is used
              to determine the maximum.</td>
          </tr>












          <tr>
            <td align="right" width="1%" nowrap>
              min(<i>X</i>)</td>
            <td valign="top">
              Return the minimum non-NULL value of all values in the group. The usual sort order
              is used to determine the minimum. NULL is only returned if all values in the group
              are NULL.</td>
          </tr>













          <tr>
            <td align="right" width="1%" nowrap>
              sum(<i>X</i>)<br />
              total(<i>X</i>)</td>
            <td valign="top">
              Return the numeric sum of all non-NULL values in the group. If there are no non-NULL
              input rows then sum() returns NULL but total() returns 0.0. NULL is not normally
................................................................................
                approximation to the true sum.</p>
              <p>
                Sum() will throw an "integer overflow" exception if all inputs are integers or NULL
                and an integer overflow occurs at any point during the computation. Total() never
                throws an exception.</p>
            </td>
          </tr>






        </table>
      </p>
      <hr>
      <div id="footer">
        <p>
          &nbsp;</p>
        <p>
        </p>
      </div>
    </div>
    </div>
  </body>
</html>







>
>
>
>
>
>







 







|






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>












>
>
>
>
>
>






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>








>
>
>
>
>
>
>
>
>
>
>
>
>
>




|
|
<





|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>











>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>







>
>
>
>
>
>
>
>
>
>
>
>








>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>













1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
...
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
...
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
...
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718

719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
...
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
...
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
<html dir="LTR" xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:ndoc="urn:ndoc-preprocess">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
    <title>expression</title>
    <link rel="stylesheet" type="text/css" href="ndoc.css"> </link>
    <link rel="stylesheet" type="text/css" href="user.css"> </link>
    <script type="text/javascript" src="ndoc.js"> </script>
    <style type="text/css">
      .style1
      {
        height: 70px;
      }
    </style>
  </head>
  <body style="display: none;">
    <input type="hidden" id="userDataCache" class="userDataStyle" />
    <input type="hidden" id="hiddenScrollOffset" />
    <img id="dropDownImage" style="display:none; height:0; width:0;" src="drpdown.gif" />
    <img id="dropDownHoverImage" style="display:none; height:0; width:0;" src="drpdown_orange.gif" />
    <img id="collapseImage" style="display:none; height:0; width:0;" src="collapse.gif" />
................................................................................
      <p>
        The core functions shown below are available by default. Additional functions may
        be written in C and added to the database engine using the <a href="capi3ref.html#cfunc">
          sqlite3_create_function()</a> API.</p>
      <p>
        <table border="0" cellpadding="10">
          <tr>
            <td align="right" valign="top" width="1%" nowrap>
              abs(<i>X</i>)</td>
            <td valign="top">
              Return the absolute value of argument <i>X</i>.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              acos(<i>X</i>)</td>
            <td valign="top">
              A mathematical function that returns the angle, in radians, whose cosine is the 
              specified <b>double</b> expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              acosh(<i>X</i>)</td>
            <td valign="top">
              Inverse hyperbolic cosine</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              asin(<i>X</i>)</td>
            <td valign="top">
              Returns the angle, in radians, whose sine is the specified <b>double</b> 
              expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              asinh(<i>X</i>)</td>
            <td valign="top">
              Inverse hyperbolic sine</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              atan(<i>X</i>)</td>
            <td valign="top">
              Returns the angle in radians whose tangent is a specified <b>double</b> 
              expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              atanh(<i>X</i>)</td>
            <td valign="top">
              Inverse hyperbolic tangent</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap class="style1">
              atn2(<i>X</i>,<i>Y</i>)<br />
              atan2(<i>X</i>,<i>Y</i>)</td>
            <td valign="top" class="style1">
              Returns the angle, in radians, between the positive x-axis and the ray from the 
              origin to the point (y, x), where x and y are the values of the two specified 
              double expressions</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              ceil(<i>X</i>)<br />
              ceiling(<i>X</i>)</td>
            <td valign="top">
              Returns the smallest integer greater than, or equal to, the specified numeric 
              expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              charindex(<i>X</i>,<i>Y</i>[,<i>Z</i>])</td>
            <td valign="top">
              Returns the 1-based position of the string <i>X</i> inside the string <i>Y</i> 
              starting at position <i>Z</i>.&nbsp; Returns 0 if not <i>X</i> is not found 
              within <i>Y</i>.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              coalesce(<i>X</i>,<i>Y</i>,...)</td>
            <td valign="top">
              Return a copy of the first non-NULL argument. If all arguments are NULL then NULL
              is returned. There must be at least 2 arguments.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              cos(<i>X</i>)</td>
            <td valign="top">
              a mathematical function that returns the trigonometric cosine of the specified 
              angle, in radians, in the specified expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              cosh(<i>X</i>)</td>
            <td valign="top">
              Hyperbolic cosine</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              cot(<i>X</i>)</td>
            <td valign="top">
              A mathematical function that returns the trigonometric cotangent of the 
              specified angle, in radians, in the specified <b>double</b> expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              coth(<i>X</i>)</td>
            <td valign="top">
              <span class="h1purpose">Hyperbolic cotangent</span></td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              difference(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Returns an integer value that indicates the difference between the SOUNDEX 
              values of two character expressions</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              degrees(<i>X</i>)</td>
            <td valign="top">
              Converts radians to degrees</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              exp(<i>X</i>)</td>
            <td valign="top">
              Returns the exponential value of the specified expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              floor(<i>X</i>)</td>
            <td valign="top">
              Returns the largest integer less than or equal to the specified numeric 
              expression</td>
          </tr>
          <tr>
            <a name="globFunc"></a>
            <td align="right" width="1%" nowrap>
              glob(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              This function is used to implement the "<b>X GLOB Y</b>" syntax of SQLite. The <a
                href="capi3ref.html#sqlite3_create_function">sqlite3_create_function()</a> interface
................................................................................
            <td align="right" width="1%" nowrap>
              last_insert_rowid()</td>
            <td valign="top">
              Return the ROWID of the last row insert from this connection to the database. This
              is the same value that would be returned from the <b>sqlite_last_insert_rowid()</b>
              API function.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              last_rows_affected()</td>
            <td valign="top">
              Returns the number of rows affected by the last insert/update operation</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              leftstr(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Returns the leftmost <i>Y</i> characters in string <i>X</i>.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              length(<i>X</i>)</td>
            <td valign="top">
              Return the string length of <i>X</i> in characters. If SQLite is configured to support
              UTF-8, then the number of UTF-8 characters is returned, not the number of bytes.</td>
          </tr>
................................................................................
            <td valign="top">
              Load SQLite extensions out of the shared library file named <i>X</i> using the entry
              point <i>Y</i>. The result is a NULL. If <i>Y</i> is omitted then the default entry
              point of <b>sqlite3_extension_init</b> is used. This function raises an exception
              if the extension fails to load or initialize correctly.
            </td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              log(<i>X</i>)</td>
            <td valign="top">
              Returns the natural logarithm of the specified <b>double</b> expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              log10(<i>X</i>)</td>
            <td valign="top">
              Returns the base-10 logarithm of the specified <b>double</b> expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              lower(<i>X</i>)</td>
            <td valign="top">
              Return a copy of string <i>X</i> will all characters converted to lower case. The
              C library <b>tolower()</b> routine is used for the conversion, which means that
              this function might not work correctly on UTF-8 characters.</td>
................................................................................
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              nullif(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Return the first argument if the arguments are different, otherwise return NULL.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              padc(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Pads the given string <i>X</i> on the left and the right with spaces until it is 
              the specified length <i>Y</i></td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              padl(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Pads the given string <i>X</i> on the left with spaces until it is the specified 
              length <i>Y</i></td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              padr(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Pads the given string <i>X</i> on the right with spaces until it is the 
              specified length <i>Y</i></td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              pi</td>
            <td valign="top">
              Returns the value of pi</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              power(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Returns the value of the specified expression <i>X</i> to the specified power <i>
              Y</i></td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              proper(<i>X</i>)</td>
            <td valign="top">
              Proper-case the given string <i>X</i></td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              quote(<i>X</i>)</td>
            <td valign="top">
              This routine returns a string which is the value of its argument suitable for inclusion
              into another SQL statement. Strings are surrounded by single-quotes with escapes
              on interior quotes as needed. BLOBs are encoded as hexadecimal literals. The current
              implementation of
          VACUUM uses this function. The function is also useful when writing
              triggers to implement undo/redo functionality.
            </td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              radians(<i>X</i>)</td>
            <td valign="top">
              Converts degrees to radians</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              random(*)</td>
            <td valign="top">
              Return a pseudo-random integer between -9223372036854775808 and +9223372036854775807.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              replicate(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Return the concatenation of string <i>X</i> repeated <i>Y</i> times</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              reverse(<i>X</i>)</td>
            <td valign="top">
              Returns the string <i>X</i> reversed</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              rightstr(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Returns the right-most <i>Y</i> characters in string <i>X</i>.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              round(<i>X</i>)<br />
              round(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Round off the number <i>X</i> to <i>Y</i> digits to the right of the decimal point.
              If the <i>Y</i> argument is omitted, 0 is assumed.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              sign(<i>X</i>)</td>
            <td valign="top">
              Returns the positive (+1), zero (0), or negative (-1) sign of the specified 
              expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              sin(<i>X</i>)</td>
            <td valign="top">
              Returns the trigonometric sine of the specified angle, in radians, and in an 
              approximate numeric, <b>double</b>, expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              soundex(<i>X</i>)</td>
            <td valign="top">
              Compute the soundex encoding of the string <i>X</i>. The string &quot;?000&quot; is 
              returned if the argument is NULL.</td>

          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              sqlite_version(*)</td>
            <td valign="top">
              Return the version string for the SQLite library that is running. Example: "3.6.0"</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              sqrt(<i>X</i>)</td>
            <td valign="top">
              Returns the square root of the specified value</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              square(X)</td>
            <td valign="top">
              Returns the square of the specified value</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              strfilter(<i>X</i>,<i>Y</i>)</td>
            <td valign="top">
              Given a source string <i>X</i> and the characters to filter <i>Y</i>, returns <i>
              X</i> with all characters not found in <i>Y</i> removed.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              substr(<i>X</i>,<i>Y</i>,<i>Z</i>)</td>
            <td valign="top">
              Return a substring of input string <i>X</i> that begins with the <i>Y</i>-th character
              and which is <i>Z</i> characters long. The left-most character of <i>X</i> is number
              1. If <i>Y</i> is negative the the first character of the substring is found by
              counting from the right rather than the left. If SQLite is configured to support
              UTF-8, then characters indices refer to actual UTF-8 characters, not bytes.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              tan(<i>X</i>)</td>
            <td valign="top">
              Returns the tangent of the input expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              tanh(<i>X</i>)</td>
            <td valign="top">
              Hyperbolic tangent</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              typeof(<i>X</i>)</td>
            <td valign="top">
              Return the type of the expression <i>X</i>. The only return values are "null", "integer",
              "real", "text", and "blob".
        SQLite's type handling is explained in <a href="http://www.sqlite.org/datatype3.html">
................................................................................
              count(<i>X</i>)<br />
              count(*)</td>
            <td valign="top">
              The first form return a count of the number of times that <i>X</i> is not NULL in
              a group. The second form (with no argument) returns the total number of rows in
              the group.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              lower_quartile(<i>X</i>)</td>
            <td valign="top">
              Returns the lower quartile of the given numbers in the set</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              max(<i>X</i>)</td>
            <td valign="top">
              Return the maximum value of all values in the group. The usual sort order is used
              to determine the maximum.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              median(<i>X</i>)</td>
            <td valign="top">
              Returns the middle value in a set of ordered numbers. (The medial value is 
              unlike the mean value, which is the sum of a set of numbers divided by the count 
              of numbers in the set). The median value is determined by choosing the smallest 
              value such that at least half of the values in the set are no greater than the 
              chosen value. If the number of values within the set is odd, the median value 
              corresponds to a single value. If the number of values within the set is even, 
              the median value corresponds to the sum of the two middle values divided by two.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              min(<i>X</i>)</td>
            <td valign="top">
              Return the minimum non-NULL value of all values in the group. The usual sort order
              is used to determine the minimum. NULL is only returned if all values in the group
              are NULL.</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              mode(<i>X</i>)</td>
            <td valign="top">
              Computes the most frequently occurring value in a sample set</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              stdev(<i>X</i>)</td>
            <td valign="top">
              Returns the statistical standard deviation of all values in the specified 
              expression</td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              sum(<i>X</i>)<br />
              total(<i>X</i>)</td>
            <td valign="top">
              Return the numeric sum of all non-NULL values in the group. If there are no non-NULL
              input rows then sum() returns NULL but total() returns 0.0. NULL is not normally
................................................................................
                approximation to the true sum.</p>
              <p>
                Sum() will throw an "integer overflow" exception if all inputs are integers or NULL
                and an integer overflow occurs at any point during the computation. Total() never
                throws an exception.</p>
            </td>
          </tr>
          <tr>
            <td align="right" width="1%" nowrap>
              upper_quartile(<i>X</i>)</td>
            <td valign="top">
              Returns the upper quartile of the numbers in the given set</td>
          </tr>
        </table>
      </p>
      <hr>
      <div id="footer">
        <p>
          &nbsp;</p>
        <p>
        </p>
      </div>
    </div>
    </div>
  </body>
</html>

Changes to Doc/Extra/version.html.

51
52
53
54
55
56
57






















































58
59
60
61
62
63
64
          </td>
        </tr>
      </table>
    </div>
    <div id="mainSection">
    <div id="mainBody">
    <h1 class="heading">Version History</h1>






















































    <p><b>1.0.54.0 - July 25, 2008</b></p>
    <ul>
      <li>Fixed the setup project, which somehow &quot;forgot&quot; to include all the binaries in 
        the 53 release.</li>
      <li>Fixed a crash in the table designer when creating a new table and tabbing past 
        the &quot;Allow Nulls&quot; cell in the grid while creating a new column.</li>
      <li>Fixed a mostly-benign bug in SQLiteDataReader&#39;s GetEnumerator, which failed to 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
          </td>
        </tr>
      </table>
    </div>
    <div id="mainSection">
    <div id="mainBody">
    <h1 class="heading">Version History</h1>
    <p><b>1.0.55.0 - August 6, 2008</b></p>
    <ul>
      <li>Code merge with SQLite 3.6.1</li>
      <li>Added support for the user-contributed extension-functions at
        <a href="http://www.sqlite.org/contrib">http://www.sqlite.org/contrib</a>.&nbsp; 
        Feel free to override any of them with your own implementation.&nbsp; The new 
        functions are: <i>acos, asin, atan, atn2, atan2, acosh, asinh, atanh, 
        difference, degrees, radians, cos, sin, tan, cot, cosh, sinh, tanh, coth, exp, 
        log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate, charindex, 
        leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter,</i> and 
        aggregates <i>stdev, variance, mode, median, lower_quartile, upper_quartile.</i></li>
      <li>Moved the last_rows_affected() function to the C extension library.</li>
      <li>Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the 
        ability for a user-defined function to get the collating sequence during the 
        Invoke/Step methods.&nbsp; User-defined functions can use the collating sequence 
        as a helper to compare values.</li>
      <li>When registering user-defined collation sequences and functions, the provider 
        will now register both a UTF8 and a UTF16 version instead of just UTF8.</li>
      <li>Revamped connection pooling and added static ClearPool() and ClearAllPools() 
        functions to SQLiteConnection.&nbsp; Behavior of the pool and its clearing 
        mechanics match SqlClient.</li>
      <li>Fixed connections going to the pool so that any unfinalized lingering commands 
        from un-collected datareaders are automatically reset and any lurking 
        transactions made on the connection are rolled back.</li>
      <li>Transaction isolation levels are now partially supported.&nbsp; Serializable 
        is the default, which obtains read/write locks immediately -- this is compatible 
        with previous releases of the provider.&nbsp; Unspecified will default to 
        whatever the default isolation mode is set to, and ReadCommitted will cause a 
        deferred lock to be obtained.&nbsp; No other values are legal.</li>
      <li>Revamped the test.exe program.&nbsp; It&#39;s now an interactive GUI application.&nbsp; 
        Easier for me to add tests now.</li>
      <li>Tweaks to the VS designer package and installer.</li>
      <li>More adjustments to the internal SQLite3.Prepare() method to account for both 
        kinds of lock errors when retrying.</li>
      <li>Stripped a lot of unnecessary interop() calls and replaced with base sqlite calls.&nbsp; 
        Revamped most of UnsafeNativeMethods to make it easier to port the code.</li>
      <li>Rerigged internal callbacks for userdef functions and other native to managed 
        callbacks.&nbsp; More portable this way.</li>
      <li>Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol to 
        force the wrapper to use the stock sqlite3 library.&nbsp; Some functionality is 
        missing, but its minimal.&nbsp; None of the precompiled binaries are compiled 
        using this setting, but its useful for testing portability.</li>
      <li>Added &quot;boolean&quot; and a couple other missing datatypes to the &quot;DataTypes&quot; schema 
        xml file.&nbsp; Used by the VS designer when displaying tables and querying.</li>
      <li>Added a new connection string option &quot;Read Only&quot;.&nbsp; When set to True, the 
        database will be opened in read-only mode.</li>
      <li>Added a new connection string option &quot;Max Pool Size&quot; to set the maximum size 
        of the connection pool for a given db file connection.</li>
      <li>Added a new connection string option &quot;Default IsolationLevel&quot; to set the 
        default isolation level of transactions.&nbsp; Possible values are Serializable and 
        ReadCommitted.</li>
      <li>Added a new connection string option &quot;URI&quot; as an optional parameter for 
        compatibility with other ports of the provider.</li>
    </ul>
    <p><b>1.0.54.0 - July 25, 2008</b></p>
    <ul>
      <li>Fixed the setup project, which somehow &quot;forgot&quot; to include all the binaries in 
        the 53 release.</li>
      <li>Fixed a crash in the table designer when creating a new table and tabbing past 
        the &quot;Allow Nulls&quot; cell in the grid while creating a new column.</li>
      <li>Fixed a mostly-benign bug in SQLiteDataReader&#39;s GetEnumerator, which failed to 

Changes to Doc/SQLite.NET.chm.

cannot compute difference between binary files

Changes to SQLite.Designer/AssemblyInfo.cs.

28
29
30
31
32
33
34
35
36
37
38
39
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.33.0")]
[assembly: AssemblyFileVersion("1.0.33.0")]
[assembly: AssemblyDelaySignAttribute(false)]
[assembly: AssemblyKeyFileAttribute("..\\System.Data.SQLite\\System.Data.SQLite.snk")]
[assembly: AssemblyKeyNameAttribute("")]







|
|



28
29
30
31
32
33
34
35
36
37
38
39
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.35.0")]
[assembly: AssemblyFileVersion("1.0.35.0")]
[assembly: AssemblyDelaySignAttribute(false)]
[assembly: AssemblyKeyFileAttribute("..\\System.Data.SQLite\\System.Data.SQLite.snk")]
[assembly: AssemblyKeyNameAttribute("")]

Changes to SQLite.Designer/Design/Table.cs.

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
..
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
...
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
  internal class Table : ViewTableBase, ICustomTypeDescriptor
  {
    private string _name;
    private string _oldname;
    private string _catalog;
    private List<Column> _columns = new List<Column>();
    private bool _exists = false;
    private bool _hascheck = false;
    private string _origSql = String.Empty;
    private List<Index> _indexes = new List<Index>();
    private List<Index> _oldindexes = new List<Index>();
    private List<ForeignKey> _fkeys = new List<ForeignKey>();
    private List<ForeignKey> _oldfkeys = new List<ForeignKey>();
    private List<string> _check = new List<string>();
    private List<Trigger> _triggers = new List<Trigger>();
................................................................................
    private void ReloadDefinition()
    {
      using (DataTable tbl = _connection.GetSchema("Tables", new string[] { Catalog, null, Name }))
      {
        if (tbl.Rows.Count > 0)
        {
          _exists = true;
          _hascheck = (bool)tbl.Rows[0]["HAS_CHECKCONSTRAINTS"];
          _origSql = tbl.Rows[0]["TABLE_DEFINITION"].ToString().Trim().TrimEnd(';');
        }
        else
        {
          _exists = false;
          return;
        }
................................................................................

    [Browsable(false)]
    public string OriginalSql
    {
      get { return _origSql; }
    }

    [Browsable(false)]
    public bool HasCheck
    {
      get { return _hascheck; }
    }

    [Category("Storage")]
    [RefreshProperties(RefreshProperties.All)]
    [ParenthesizePropertyName(true)]
    public override string Name
    {
      get { return _name; }
      set







<







 







<







 







<
<
<
<
<
<







29
30
31
32
33
34
35

36
37
38
39
40
41
42
..
87
88
89
90
91
92
93

94
95
96
97
98
99
100
...
263
264
265
266
267
268
269






270
271
272
273
274
275
276
  internal class Table : ViewTableBase, ICustomTypeDescriptor
  {
    private string _name;
    private string _oldname;
    private string _catalog;
    private List<Column> _columns = new List<Column>();
    private bool _exists = false;

    private string _origSql = String.Empty;
    private List<Index> _indexes = new List<Index>();
    private List<Index> _oldindexes = new List<Index>();
    private List<ForeignKey> _fkeys = new List<ForeignKey>();
    private List<ForeignKey> _oldfkeys = new List<ForeignKey>();
    private List<string> _check = new List<string>();
    private List<Trigger> _triggers = new List<Trigger>();
................................................................................
    private void ReloadDefinition()
    {
      using (DataTable tbl = _connection.GetSchema("Tables", new string[] { Catalog, null, Name }))
      {
        if (tbl.Rows.Count > 0)
        {
          _exists = true;

          _origSql = tbl.Rows[0]["TABLE_DEFINITION"].ToString().Trim().TrimEnd(';');
        }
        else
        {
          _exists = false;
          return;
        }
................................................................................

    [Browsable(false)]
    public string OriginalSql
    {
      get { return _origSql; }
    }







    [Category("Storage")]
    [RefreshProperties(RefreshProperties.All)]
    [ParenthesizePropertyName(true)]
    public override string Name
    {
      get { return _name; }
      set

Changes to SQLite.Designer/SQLite.Designer.csproj.

1
2
3
4
5
6
7
8
9
10
11
12
..
66
67
68
69
70
71
72

73
74
75
76
77
78
79
...
201
202
203
204
205
206
207



208
209
210
211
212
213
214
215
216
217
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.30428</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{9B4A5CF6-5BE5-4926-ACC7-B729A8C05198}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SQLite.Designer</RootNamespace>
    <AssemblyName>SQLite.Designer</AssemblyName>
    <SignAssembly>false</SignAssembly>
................................................................................
      <HintPath>..\..\..\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\Microsoft.VisualStudio.CommandBars.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Data, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\Program Files (x86)\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\2005\Microsoft.VisualStudio.Data.dll</HintPath>
      <Private>False</Private>
    </Reference>

    <Reference Include="Microsoft.VisualStudio.OLE.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Shell, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
................................................................................
      <DependentUpon>ChangeScriptDialog.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="SQLiteDataViewSupport2005.xml" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Resources\info.png" />
  </ItemGroup>



  <ItemGroup>
    <Folder Include="Properties\" />
  </ItemGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\VSSDK\Microsoft.VsSDK.targets" />
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
</Project>




|







 







>







 







>
>
>










1
2
3
4
5
6
7
8
9
10
11
12
..
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
...
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{9B4A5CF6-5BE5-4926-ACC7-B729A8C05198}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SQLite.Designer</RootNamespace>
    <AssemblyName>SQLite.Designer</AssemblyName>
    <SignAssembly>false</SignAssembly>
................................................................................
      <HintPath>..\..\..\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\Microsoft.VisualStudio.CommandBars.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Data, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\Program Files (x86)\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\2005\Microsoft.VisualStudio.Data.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Data.Services, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.VisualStudio.OLE.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Shell, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
................................................................................
      <DependentUpon>ChangeScriptDialog.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="SQLiteDataViewSupport2005.xml" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Resources\info.png" />
  </ItemGroup>
  <ItemGroup>
    <None Include="Resources\ToolboxItems.txt" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Properties\" />
  </ItemGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\VSSDK\Microsoft.VsSDK.targets" />
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
</Project>

Changes to SQLite.Designer/SQLiteConnectionProperties.cs.

13
14
15
16
17
18
19
20

21
22
23
24

25
26
27
28
29
30
31
32







33
34








35
36



37
38



39
40










41
42
43

44











45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63







64
65


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  using Microsoft.Win32;

  /// <summary>
  /// Provides rudimentary connectionproperties support
  /// </summary>
  internal sealed class SQLiteConnectionProperties : AdoDotNetConnectionProperties
  {
    public SQLiteConnectionProperties() : base("System.Data.SQLite")

    {
    }

    public SQLiteConnectionProperties(string connectionString) : base("System.Data.SQLite", connectionString)

    {
    }

    public override string[] GetBasicProperties()
    {
      return new string[] { "Data Source" };
    }








    public override bool  IsComplete
    {








      get 
      {



        return true;
      }



    }











    public override bool EquivalentTo(DataConnectionProperties connectionProperties)
    {
      SQLiteConnectionProperties props = connectionProperties as SQLiteConnectionProperties;













      if (props == null) return false;

      return (String.Compare((string)this["Data Source"], (string)props["Data Source"], true) == 0);
    }
    // Provides automatic locating and loading of the SQLite assembly if its not registered in the GAC.
    // However, if it's not registered in the GAC, then certain design-time elements will fail.
    //
    //private static System.Reflection.Assembly _sqlite = null;
    //static SQLiteConnectionProperties()
    //{
    //  AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
    //}

    //private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    //{
    //  if (args.Name.StartsWith("System.Data.SQLite", StringComparison.InvariantCultureIgnoreCase))
    //  {
    //    return SQLiteAssembly;
    //  }







    //  return null;
    //}



    //internal static System.Reflection.Assembly SQLiteAssembly
    //{
    //  get
    //  {
    //    if (_sqlite == null)
    //    {
    //      using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\.NETFramework\\v2.0.50727\\AssemblyFoldersEx\\SQLite"))
    //      {
    //        if (key != null)
    //        {
    //          _sqlite = System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(key.GetValue(null).ToString(), "System.Data.SQLite.DLL"));
    //        }
    //      }
    //    }
    //    return _sqlite;
    //  }
    //}
  }
}







|
>



|
>





|


>
>
>
>
>
>
>
|

>
>
>
>
>
>
>
>
|

>
>
>
|

>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
|

<
>
|
>
>
>
>
>
>
>
>
>
>
>
|
|
<

<
<
<
<
<
<
<
<

<
<
<
<
<
<
>
>
>
>
>
>
>
|
<
>
>
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

91








92






93
94
95
96
97
98
99
100

101
102
103

















104
105
  using Microsoft.Win32;

  /// <summary>
  /// Provides rudimentary connectionproperties support
  /// </summary>
  internal sealed class SQLiteConnectionProperties : AdoDotNetConnectionProperties
  {
    public SQLiteConnectionProperties()
      : this(null)
    {
    }

    public SQLiteConnectionProperties(string connectionString)
      : base("System.Data.SQLite", connectionString)
    {
    }

    public override string[] GetBasicProperties()
    {
      return new string[] { "data source" };
    }

    protected override bool ShouldPersistProperty(string propertyName)
    {
      if (String.Compare(propertyName, "Database", StringComparison.OrdinalIgnoreCase) == 0) return false;

      return base.ShouldPersistProperty(propertyName);
    }

    public override bool Contains(string propertyName)
    {
      if (String.Compare(propertyName, "Database", StringComparison.OrdinalIgnoreCase) == 0)
        return (base.Contains("data source") || base.Contains("uri"));

      return base.Contains(propertyName);
    }

    public override object this[string propertyName]
    {
      get
      {
        if (String.Compare(propertyName, "Database", StringComparison.OrdinalIgnoreCase) == 0)
          return System.IO.Path.GetFileNameWithoutExtension(GetDatabaseFile());

        return base[propertyName];
      }
      set
      {
        base[propertyName] = value;
      }
    }

    internal string GetDatabaseFile()
    {
      if (this["data source"] is string && ((string)this["data source"]).Length > 0)
        return (string)this["data source"];
      else if (this["uri"] is string)
        return MapUriPath((string)this["uri"]);
      return String.Empty;
    }

    public override bool  IsComplete
    {

      get 
      {
        if (Contains("data source") == true)
        {
          if (this["data source"] is string && ((string)this["data source"]).Length > 0)
            return true;
        }
        else if (Contains("uri") == true)
        {
          if (this["uri"] is string && MapUriPath((string)this["uri"]).Length > 0)
            return true;
        }

        return false;
      }

    }















    internal static string MapUriPath(string path)
    {
      if (path.StartsWith("file://"))
        return path.Substring(7);
      else if (path.StartsWith("file:"))
        return path.Substring(5);
      else if (path.StartsWith("/"))
        return path;

      else
        return String.Empty;
    }

















  }
}

Changes to SQLite.Designer/SQLiteConnectionUIControl.Designer.cs.

45
46
47
48
49
50
51

52
53
54
55
56
57
58
...
127
128
129
130
131
132
133

134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
...
288
289
290
291
292
293
294












295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
...
328
329
330
331
332
333
334

335
336
      this.pageSizeTextBox = new System.Windows.Forms.TextBox();
      this.fileTextBox = new System.Windows.Forms.TextBox();
      this.browseButton = new System.Windows.Forms.Button();
      this.newDatabase = new System.Windows.Forms.Button();
      this.offRadioButton = new System.Windows.Forms.RadioButton();
      this.normalRadioButton = new System.Windows.Forms.RadioButton();
      this.fullRadioButton = new System.Windows.Forms.RadioButton();

      labelPassword = new System.Windows.Forms.Label();
      securityGroup = new System.Windows.Forms.GroupBox();
      encodingGroup = new System.Windows.Forms.GroupBox();
      dateTimeGroup = new System.Windows.Forms.GroupBox();
      databaseGroup = new System.Windows.Forms.GroupBox();
      cacheSizeLabel = new System.Windows.Forms.Label();
      pageSizeLabel = new System.Windows.Forms.Label();
................................................................................
      this.utf8RadioButton.TabStop = true;
      this.utf8RadioButton.Text = "UTF-8";
      this.utf8RadioButton.UseVisualStyleBackColor = true;
      this.utf8RadioButton.CheckedChanged += new System.EventHandler(this.encoding_Changed);
      // 
      // dateTimeGroup
      // 

      dateTimeGroup.Controls.Add(this.ticksRadioButton);
      dateTimeGroup.Controls.Add(this.iso8601RadioButton);
      dateTimeGroup.Location = new System.Drawing.Point(84, 159);
      dateTimeGroup.Name = "dateTimeGroup";
      dateTimeGroup.Size = new System.Drawing.Size(113, 98);
      dateTimeGroup.TabIndex = 8;
      dateTimeGroup.TabStop = false;
      dateTimeGroup.Text = "Date/Time Format";
      // 
      // ticksRadioButton
      // 
      this.ticksRadioButton.AutoSize = true;
      this.ticksRadioButton.Location = new System.Drawing.Point(6, 44);
      this.ticksRadioButton.Name = "ticksRadioButton";
      this.ticksRadioButton.Size = new System.Drawing.Size(48, 17);
      this.ticksRadioButton.TabIndex = 1;
      this.ticksRadioButton.TabStop = true;
      this.ticksRadioButton.Text = "Ticks";
      this.ticksRadioButton.UseVisualStyleBackColor = true;
      this.ticksRadioButton.CheckedChanged += new System.EventHandler(this.datetime_Changed);
................................................................................
      this.fullRadioButton.Name = "fullRadioButton";
      this.fullRadioButton.Size = new System.Drawing.Size(41, 17);
      this.fullRadioButton.TabIndex = 0;
      this.fullRadioButton.Text = "Full";
      this.fullRadioButton.UseVisualStyleBackColor = true;
      this.fullRadioButton.CheckedChanged += new System.EventHandler(this.sync_Changed);
      // 












      // SQLiteConnectionUIControl
      // 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
      this.Controls.Add(syncGroup);
      this.Controls.Add(databaseGroup);
      this.Controls.Add(dateTimeGroup);
      this.Controls.Add(encodingGroup);
      this.Controls.Add(securityGroup);
      this.Font = new System.Drawing.Font("MS Shell Dlg 2", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
      this.Name = "SQLiteConnectionUIControl";
      this.Size = new System.Drawing.Size(312, 322);
      securityGroup.ResumeLayout(false);
      securityGroup.PerformLayout();
      encodingGroup.ResumeLayout(false);
      encodingGroup.PerformLayout();
      dateTimeGroup.ResumeLayout(false);
................................................................................
    private System.Windows.Forms.RadioButton ticksRadioButton;
    private System.Windows.Forms.RadioButton iso8601RadioButton;
    private System.Windows.Forms.TextBox pageSizeTextBox;
    private System.Windows.Forms.TextBox cacheSizeTextbox;
    private System.Windows.Forms.RadioButton offRadioButton;
    private System.Windows.Forms.RadioButton normalRadioButton;
    private System.Windows.Forms.RadioButton fullRadioButton;

  }
}







>







 







>












|







 







>
>
>
>
>
>
>
>
>
>
>
>








|







 







>


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
...
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
...
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
...
342
343
344
345
346
347
348
349
350
351
      this.pageSizeTextBox = new System.Windows.Forms.TextBox();
      this.fileTextBox = new System.Windows.Forms.TextBox();
      this.browseButton = new System.Windows.Forms.Button();
      this.newDatabase = new System.Windows.Forms.Button();
      this.offRadioButton = new System.Windows.Forms.RadioButton();
      this.normalRadioButton = new System.Windows.Forms.RadioButton();
      this.fullRadioButton = new System.Windows.Forms.RadioButton();
      this.julianRadioButton = new System.Windows.Forms.RadioButton();
      labelPassword = new System.Windows.Forms.Label();
      securityGroup = new System.Windows.Forms.GroupBox();
      encodingGroup = new System.Windows.Forms.GroupBox();
      dateTimeGroup = new System.Windows.Forms.GroupBox();
      databaseGroup = new System.Windows.Forms.GroupBox();
      cacheSizeLabel = new System.Windows.Forms.Label();
      pageSizeLabel = new System.Windows.Forms.Label();
................................................................................
      this.utf8RadioButton.TabStop = true;
      this.utf8RadioButton.Text = "UTF-8";
      this.utf8RadioButton.UseVisualStyleBackColor = true;
      this.utf8RadioButton.CheckedChanged += new System.EventHandler(this.encoding_Changed);
      // 
      // dateTimeGroup
      // 
      dateTimeGroup.Controls.Add(this.julianRadioButton);
      dateTimeGroup.Controls.Add(this.ticksRadioButton);
      dateTimeGroup.Controls.Add(this.iso8601RadioButton);
      dateTimeGroup.Location = new System.Drawing.Point(84, 159);
      dateTimeGroup.Name = "dateTimeGroup";
      dateTimeGroup.Size = new System.Drawing.Size(113, 98);
      dateTimeGroup.TabIndex = 8;
      dateTimeGroup.TabStop = false;
      dateTimeGroup.Text = "Date/Time Format";
      // 
      // ticksRadioButton
      // 
      this.ticksRadioButton.AutoSize = true;
      this.ticksRadioButton.Location = new System.Drawing.Point(7, 66);
      this.ticksRadioButton.Name = "ticksRadioButton";
      this.ticksRadioButton.Size = new System.Drawing.Size(48, 17);
      this.ticksRadioButton.TabIndex = 1;
      this.ticksRadioButton.TabStop = true;
      this.ticksRadioButton.Text = "Ticks";
      this.ticksRadioButton.UseVisualStyleBackColor = true;
      this.ticksRadioButton.CheckedChanged += new System.EventHandler(this.datetime_Changed);
................................................................................
      this.fullRadioButton.Name = "fullRadioButton";
      this.fullRadioButton.Size = new System.Drawing.Size(41, 17);
      this.fullRadioButton.TabIndex = 0;
      this.fullRadioButton.Text = "Full";
      this.fullRadioButton.UseVisualStyleBackColor = true;
      this.fullRadioButton.CheckedChanged += new System.EventHandler(this.sync_Changed);
      // 
      // julianRadioButton
      // 
      this.julianRadioButton.AutoSize = true;
      this.julianRadioButton.Location = new System.Drawing.Point(7, 44);
      this.julianRadioButton.Name = "julianRadioButton";
      this.julianRadioButton.Size = new System.Drawing.Size(74, 17);
      this.julianRadioButton.TabIndex = 2;
      this.julianRadioButton.TabStop = true;
      this.julianRadioButton.Text = "Julian Day";
      this.julianRadioButton.UseVisualStyleBackColor = true;
      this.julianRadioButton.CheckedChanged += new System.EventHandler(this.datetime_Changed);
      // 
      // SQLiteConnectionUIControl
      // 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
      this.Controls.Add(syncGroup);
      this.Controls.Add(databaseGroup);
      this.Controls.Add(dateTimeGroup);
      this.Controls.Add(encodingGroup);
      this.Controls.Add(securityGroup);
      this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
      this.Name = "SQLiteConnectionUIControl";
      this.Size = new System.Drawing.Size(312, 322);
      securityGroup.ResumeLayout(false);
      securityGroup.PerformLayout();
      encodingGroup.ResumeLayout(false);
      encodingGroup.PerformLayout();
      dateTimeGroup.ResumeLayout(false);
................................................................................
    private System.Windows.Forms.RadioButton ticksRadioButton;
    private System.Windows.Forms.RadioButton iso8601RadioButton;
    private System.Windows.Forms.TextBox pageSizeTextBox;
    private System.Windows.Forms.TextBox cacheSizeTextbox;
    private System.Windows.Forms.RadioButton offRadioButton;
    private System.Windows.Forms.RadioButton normalRadioButton;
    private System.Windows.Forms.RadioButton fullRadioButton;
    private System.Windows.Forms.RadioButton julianRadioButton;
  }
}

Changes to SQLite.Designer/SQLiteConnectionUIControl.cs.

52
53
54
55
56
57
58

59


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
      }
    }

    #region IDataConnectionUIControl Members

    public override void LoadProperties()
    {

      fileTextBox.Text = ConnectionProperties["Data Source"] as string;


      passwordTextBox.Text = ConnectionProperties["Password"] as string;
    }

    #endregion

    private void passwordTextBox_Leave(object sender, EventArgs e)
    {
      if (String.IsNullOrEmpty(passwordTextBox.Text))
        ConnectionProperties.Remove("Password");
      else
        ConnectionProperties["Password"] = passwordTextBox.Text;
    }

    private void encoding_Changed(object sender, EventArgs e)
    {
      if (utf8RadioButton.Checked == true)
        ConnectionProperties.Remove("UseUTF16Encoding");
      else
        ConnectionProperties["UseUTF16Encoding"] = utf16RadioButton.Checked;
    }

    private void datetime_Changed(object sender, EventArgs e)
    {
      if (iso8601RadioButton.Checked == true)
        ConnectionProperties.Remove("DateTimeFormat");


      else
        ConnectionProperties["DateTimeFormat"] = "Ticks";
    }

    private void sync_Changed(object sender, EventArgs e)
    {
      string sync = "Normal";
      if (fullRadioButton.Checked == true) sync = "Full";
      else if (offRadioButton.Checked == true) sync = "Off";

      if (sync == "Normal")
        ConnectionProperties.Remove("Synchronous");
      else
        ConnectionProperties["Synchronous"] = sync;
    }

    private void pageSizeTextBox_Leave(object sender, EventArgs e)
    {
      int n = Convert.ToInt32(pageSizeTextBox.Text);
      ConnectionProperties["Page Size"] = n;
    }

    private void cacheSizeTextbox_Leave(object sender, EventArgs e)
    {
      int n = Convert.ToInt32(cacheSizeTextbox.Text);
      ConnectionProperties["Cache Size"] = n;
    }

    private void fileTextBox_Leave(object sender, EventArgs e)
    {
      ConnectionProperties["Data Source"] = fileTextBox.Text;
    }
  }
}







>
|
>
>
|







|

|





|

|





|
>
>

|









|

|





|





|




|



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
      }
    }

    #region IDataConnectionUIControl Members

    public override void LoadProperties()
    {
      if (ConnectionProperties.Contains("data source"))
        fileTextBox.Text = ConnectionProperties["data source"] as string;

      if (ConnectionProperties.Contains("password"))
        passwordTextBox.Text = ConnectionProperties["password"] as string;
    }

    #endregion

    private void passwordTextBox_Leave(object sender, EventArgs e)
    {
      if (String.IsNullOrEmpty(passwordTextBox.Text))
        ConnectionProperties.Remove("password");
      else
        ConnectionProperties["password"] = passwordTextBox.Text;
    }

    private void encoding_Changed(object sender, EventArgs e)
    {
      if (utf8RadioButton.Checked == true)
        ConnectionProperties.Remove("useutf16encoding");
      else
        ConnectionProperties["useutf16encoding"] = utf16RadioButton.Checked;
    }

    private void datetime_Changed(object sender, EventArgs e)
    {
      if (iso8601RadioButton.Checked == true)
        ConnectionProperties.Remove("datetimeformat");
      else if (ticksRadioButton.Checked == true)
        ConnectionProperties["datetimeformat"] = "Ticks";
      else
        ConnectionProperties["datetimeformat"] = "JulianDay";
    }

    private void sync_Changed(object sender, EventArgs e)
    {
      string sync = "Normal";
      if (fullRadioButton.Checked == true) sync = "Full";
      else if (offRadioButton.Checked == true) sync = "Off";

      if (sync == "Normal")
        ConnectionProperties.Remove("synchronous");
      else
        ConnectionProperties["synchronous"] = sync;
    }

    private void pageSizeTextBox_Leave(object sender, EventArgs e)
    {
      int n = Convert.ToInt32(pageSizeTextBox.Text);
      ConnectionProperties["page size"] = n;
    }

    private void cacheSizeTextbox_Leave(object sender, EventArgs e)
    {
      int n = Convert.ToInt32(cacheSizeTextbox.Text);
      ConnectionProperties["cache size"] = n;
    }

    private void fileTextBox_Leave(object sender, EventArgs e)
    {
      ConnectionProperties["data source"] = fileTextBox.Text;
    }
  }
}

Changes to SQLite.Designer/SQLiteConnectionUIControl.resx.

128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
  </metadata>
  <metadata name="dateTimeGroup.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="databaseGroup.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="cacheSizeLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="pageSizeLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="cacheSizeLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="pageSizeLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="syncGroup.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
</root>







<
<
<
<
<
<










128
129
130
131
132
133
134






135
136
137
138
139
140
141
142
143
144
  </metadata>
  <metadata name="dateTimeGroup.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="databaseGroup.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>






  <metadata name="cacheSizeLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="pageSizeLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
  <metadata name="syncGroup.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </metadata>
</root>

Changes to SQLite.Designer/SQLitePackage.cs.

24
25
26
27
28
29
30



31
32














33
34
35
36
37
38
39
40
41
42
    {
    }

    protected override void Initialize()
    {
      IServiceContainer sc = (IServiceContainer)this;
      sc.AddService(typeof(SQLiteProviderObjectFactory), new ServiceCreatorCallback(CreateService), true);



      base.Initialize();
    }















    private object CreateService(IServiceContainer container, Type serviceType)
    {
      if (serviceType == typeof(SQLiteProviderObjectFactory))
        return new SQLiteProviderObjectFactory();

      return null;
    }
  }
}







>
>
>


>
>
>
>
>
>
>
>
>
>
>
>
>
>










24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    {
    }

    protected override void Initialize()
    {
      IServiceContainer sc = (IServiceContainer)this;
      sc.AddService(typeof(SQLiteProviderObjectFactory), new ServiceCreatorCallback(CreateService), true);

      ToolboxInitialized += new EventHandler(SQLitePackage_ToolboxInitialized);
      ToolboxUpgraded += new EventHandler(SQLitePackage_ToolboxUpgraded);
      base.Initialize();
    }

    void SQLitePackage_ToolboxUpgraded(object sender, EventArgs e)
    {
      IVsToolbox vstbx = GetService(typeof(SVsToolbox)) as IVsToolbox;

      vstbx.RemoveTab("SQLite");

      SQLitePackage_ToolboxInitialized(sender, e);
    }

    void SQLitePackage_ToolboxInitialized(object sender, EventArgs e)
    {
      ParseToolboxResource(new System.IO.StringReader(VSPackage.ToolboxItems), null);
    }

    private object CreateService(IServiceContainer container, Type serviceType)
    {
      if (serviceType == typeof(SQLiteProviderObjectFactory))
        return new SQLiteProviderObjectFactory();

      return null;
    }
  }
}

Changes to SQLite.Designer/VSPackage.Designer.cs.

98
99
100
101
102
103
104
105






106



        ///   Looks up a localized string similar to The database and its metadata will be re-encrypted using the supplied password as a hash..
        /// </summary>
        internal static string ReEncrypt {
            get {
                return ResourceManager.GetString("ReEncrypt", resourceCulture);
            }
        }
    }






}










|
>
>
>
>
>
>
|
>
>
>
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
        ///   Looks up a localized string similar to The database and its metadata will be re-encrypted using the supplied password as a hash..
        /// </summary>
        internal static string ReEncrypt {
            get {
                return ResourceManager.GetString("ReEncrypt", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to .
        /// </summary>
        internal static string ToolboxItems {
            get {
                return ResourceManager.GetString("ToolboxItems", resourceCulture);
            }
        }
    }
}

Changes to SQLite.Designer/VSPackage.resx.

129
130
131
132
133
134
135



136
  <data name="400" xml:space="preserve">
    <value>MHM2ZQETQKDTJEPTC1MTQCZ1R1KQEMAPZHETDZPZI9RPJ0E0DHAHKCHZPKQ8AQZICADHKIZ1JAQED8IDEHZPZKZEIKAQERHPRCQMAMRKDEZZQRDRDHJEZIKECZPDIIKC</value>
  </data>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>



</root>







>
>
>

129
130
131
132
133
134
135
136
137
138
139
  <data name="400" xml:space="preserve">
    <value>MHM2ZQETQKDTJEPTC1MTQCZ1R1KQEMAPZHETDZPZI9RPJ0E0DHAHKCHZPKQ8AQZICADHKIZ1JAQED8IDEHZPZKZEIKAQERHPRCQMAMRKDEZZQRDRDHJEZIKECZPDIIKC</value>
  </data>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="ToolboxItems" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>Resources\ToolboxItems.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
  </data>
</root>

Changes to bin/CompactFramework/System.Data.SQLite.DLL.

cannot compute difference between binary files

Changes to bin/CompactFramework/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to bin/CompactFramework/testce.exe.

cannot compute difference between binary files

Changes to bin/Designer/SQLite.Designer.dll.

cannot compute difference between binary files

Changes to bin/Designer/SQLite.Designer.pdb.

cannot compute difference between binary files

Changes to bin/Designer/install.exe.

cannot compute difference between binary files

Changes to bin/Designer/install.pdb.

cannot compute difference between binary files

Changes to bin/System.Data.SQLite.XML.

1
2
3
4
5
6

















































7
8
9
10
11
12
13
..
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115


















116
117
118
119
120
121
122
...
126
127
128
129
130
131
132





133
134
135
136
137
138
139
...
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244









245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269












270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286

287
288
289
290
291
292
293
...
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605


















606
607
608
609
610
611
612
...
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
...
975
976
977
978
979
980
981


















982
983
984
985
986
987
988
....
1025
1026
1027
1028
1029
1030
1031

























































































































1032
1033
1034
1035
1036
1037
1038
....
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
....
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
....
1216
1217
1218
1219
1220
1221
1222





1223
1224
1225
1226
1227
1228
1229
....
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316

1317
1318
1319
1320
1321
1322
1323
....
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
....
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388

























































































































































1389
1390
1391
1392
1393
1394
1395
....
2001
2002
2003
2004
2005
2006
2007





2008
2009
2010
2011
2012
2013
2014
....
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265



2266
2267
2268
2269
2270
2271
2272
....
2280
2281
2282
2283
2284
2285
2286





2287
2288
2289
2290
2291
2292
2293
....
2387
2388
2389
2390
2391
2392
2393





2394
2395
2396
2397
2398
2399
2400
....
2411
2412
2413
2414
2415
2416
2417





2418
2419
2420
2421
2422
2423
2424
....
2436
2437
2438
2439
2440
2441
2442










2443
2444
2445
2446
2447
2448
2449
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>System.Data.SQLite</name>
    </assembly>
    <members>

















































        <member name="T:System.Data.SQLite.SQLiteConnection">
            <summary>
            SQLite implentation of DbConnection.
            </summary>
            <remarks>
            The <see cref="P:System.Data.SQLite.SQLiteConnection.ConnectionString">ConnectionString</see> property of the SQLiteConnection class can contain the following parameter(s), delimited with a semi-colon:
            <list type="table">
................................................................................
            <description>N</description>
            <description>0</description>
            </item>
            <item>
            <description>Legacy Format</description>
            <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
            <description>N</description>
            <description>True</description>
            </item>
            <item>
            <description>Default Timeout</description>
            <description>{time in seconds}<br/>The default command timeout</description>
            <description>N</description>
            <description>30</description>
            </item>
            <item>
            <description>Journal Mode</description>
            <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
            <description>N</description>
            <description>Delete</description>
            </item>


















            </list>
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._connectionState">
            <summary>
            State of the current connection
            </summary>
................................................................................
            The connection string
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._transactionLevel">
            <summary>
            Nesting level of the transactions open on the connection
            </summary>





        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._enlistment">
            <summary>
            Whether or not the connection is enlisted in a distrubuted transaction
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._sql">
................................................................................
            <summary>
            Raises the state change event when the state of the connection changes
            </summary>
            <param name="newState">The new state.  If it is different from the previous state, an event is raised.</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction(System.Data.IsolationLevel,System.Boolean)">
            <summary>
            Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <param name="isolationLevel">SQLite doesn't support varying isolation levels, so this parameter is ignored.</param>
            <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
            When FALSE, a writelock is obtained immediately.  The default is TRUE, but in a multi-threaded multi-writer 
            environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction(System.Boolean)">
            <summary>
            Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
            When FALSE, a writelock is obtained immediately.  The default is TRUE, but in a multi-threaded multi-writer 
            environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction(System.Data.IsolationLevel)">
            <summary>
            Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <param name="isolationLevel">SQLite supports only serializable transactions.</param>









            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction">
            <summary>
            Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginDbTransaction(System.Data.IsolationLevel)">
            <summary>
            Forwards to the local BeginTransaction() function
            </summary>
            <param name="isolationLevel"></param>
            <returns></returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.ChangeDatabase(System.String)">
            <summary>
            Not implemented
            </summary>
            <param name="databaseName"></param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.Close">
            <summary>
            When the database connection is closed, all commands linked to this connection are automatically reset.
            </summary>












        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.CreateCommand">
            <summary>
            Create a new SQLiteCommand and associate it with this connection.
            </summary>
            <returns>Returns an instantiated SQLiteCommand object already assigned to this connection.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.CreateDbCommand">
            <summary>
            Forwards to the local CreateCommand() function
            </summary>
            <returns></returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.ParseConnectionString">
            <summary>
            Parses the connection string into component parts
            </summary>

            <returns>An array of key-value pairs representing each parameter of the connection string</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.EnlistTransaction(System.Transactions.Transaction)">
            <summary>
            Manual distributed transaction enlistment support
            </summary>
            <param name="transaction">The distributed transaction to enlist in</param>
................................................................................
            <description>N</description>
            <description>0</description>
            </item>
            <item>
            <description>Legacy Format</description>
            <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
            <description>N</description>
            <description>True</description>
            </item>
            <item>
            <description>Default Timeout</description>
            <description>{time in seconds}<br/>The default command timeout</description>
            <description>N</description>
            <description>30</description>
            </item>
            <item>
            <description>Journal Mode</description>
            <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
            <description>N</description>
            <description>Delete</description>
            </item>


















            </list>
            </remarks>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnection.DataSource">
            <summary>
            Returns the filename without extension or path
            </summary>
................................................................................
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteDataAdapter.DeleteCommand">
            <summary>
            Gets/sets the delete command for this DataAdapter
            </summary>
        </member>
        <member name="T:System.Data.SQLite.TypeAffinity">
            <summary>
            SQLite has very limited types, and is inherently text-based.  The first 5 types below represent the sum of all types SQLite
            understands.  The DateTime extension to the spec is for internal use only.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Uninitialized">
            <summary>
            Not used
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Int64">
            <summary>
            All integers in SQLite default to Int64
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Double">
            <summary>
            All floating point numbers in SQLite default to double
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Text">
            <summary>
            The default data type of SQLite is text
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Blob">
            <summary>
            Typically blob types are only seen when returned from a function
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Null">
            <summary>
            Null types can be returned from functions
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.DateTime">
            <summary>
            Used internally by this provider
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.None">
            <summary>
            Used internally
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteDateFormats">
            <summary>
            This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats.  Ticks, ISO8601
            and JulianDay.
            Ticks is inherently more accurate, but less compatible with 3rd party tools that query the database, and renders the DateTime field
            unreadable as text without post-processing.
            ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second.
            JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools.  It is
            not readable as text without post-processing.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDateFormats.Ticks">
            <summary>
            Using ticks is more accurate but less compatible with other viewers and utilities that access your database.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDateFormats.ISO8601">
            <summary>
            The default format for this provider.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDateFormats.JulianDay">
            <summary>
            JulianDay format, which is what SQLite uses internally
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteJournalModeEnum">
            <summary>
            This enum determines how SQLite treats its journal file.
            </summary>
            <remarks>
            By default SQLite will create and delete the journal file when needed during a transaction.
            However, for some computers running certain filesystem monitoring tools, the rapid
            creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite.
            
            If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file"
            when starting a transaction.  If this is happening, you may want to change the default journal mode to Persist.
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Delete">
            <summary>
            The default mode, this causes SQLite to create and destroy the journal file as-needed.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Persist">
            <summary>
            When this is set, SQLite will keep the journal file even after a transaction has completed.  It's contents will be erased,
            and the journal re-used as often as needed.  If it is deleted, it will be recreated the next time it is needed.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Off">
            <summary>
            This option disables the rollback journal entirely.  Interrupted transactions or a program crash can cause database
            corruption in this mode!
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteType">
            <summary>
            Struct used internally to determine the datatype of a column in a resultset
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteType.Type">
            <summary>
            The DbType of the column, or DbType.Object if it cannot be determined
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteType.Affinity">
            <summary>
            The affinity of a column, used for expressions or when Type is DbType.Object
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteConvert">
            <summary>
            This base class provides datatype conversion services for the SQLite provider.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConvert._datetimeFormats">
            <summary>
................................................................................
            [3] Five<br/>
            <br/>
            Note that the leading and trailing spaces were removed from each item during the split.
            </remarks>
            <param name="source">Source string to split apart</param>
            <param name="separator">Separator character</param>
            <returns>A string array of the split up elements</returns>


















        </member>
        <member name="M:System.Data.SQLite.SQLiteConvert.ColumnToType(System.Data.SQLite.SQLiteStatement,System.Int32,System.Data.SQLite.SQLiteType)">
            <summary>
            Determines the data type of a column in a statement
            </summary>
            <param name="stmt">The statement to retrieve information for</param>
            <param name="i">The column to retrieve type information on</param>
................................................................................
        </member>
        <member name="M:System.Data.SQLite.SQLiteConvert.TypeNameToDbType(System.String)">
            <summary>
            For a given type name, return a closest-match .NET type
            </summary>
            <param name="Name">The name of the type to match</param>
            <returns>The .NET DBType the text evaluates to.</returns>

























































































































        </member>
        <member name="T:System.Data.SQLite.SQLiteTransaction">
            <summary>
            SQLite implementation of DbTransaction.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteTransaction._cnn">
................................................................................
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteKeyReader.KeyQuery">
            <summary>
            A single sub-query for a given table/database.
            </summary>
        </member>
        <member name="T:System.Data.SQLite.FunctionType">
            <summary>
            The type of user-defined function to declare
            </summary>
        </member>
        <member name="F:System.Data.SQLite.FunctionType.Scalar">
            <summary>
            Scalar functions are designed to be called and return a result immediately.  Examples include ABS(), Upper(), Lower(), etc.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.FunctionType.Aggregate">
            <summary>
            Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data.
            Examples include SUM(), COUNT(), AVG(), etc.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.FunctionType.Collation">
            <summary>
            Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause.  Typically text in an ORDER BY is
            sorted using a straight case-insensitive comparison function.  Custom collating sequences can be used to alter the behavior of text sorting
            in a user-defined manner.
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteCallback">
            <summary>
            An internal callback delegate declaration.
            </summary>
            <param name="context">Raw context pointer for the user function</param>
            <param name="nArgs">Count of arguments to the function</param>
            <param name="argsptr">A pointer to the array of argument pointers</param>
        </member>
        <member name="T:System.Data.SQLite.SQLiteCollation">
            <summary>
            Internal callback delegate for implementing collation sequences
            </summary>
            <param name="len1">Length of the string pv1</param>
            <param name="pv1">Pointer to the first string to compare</param>
            <param name="len2">Length of the string pv2</param>
            <param name="pv2">Pointer to the second string to compare</param>
            <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
            than the second.</returns>
        </member>
        <member name="T:System.Data.SQLite.SQLiteFunction">
            <summary>
            This abstract class is designed to handle user-defined functions easily.  An instance of the derived class is made for each
            connection to the database.
            </summary>
            <remarks>
            Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access
................................................................................
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._base">
            <summary>
            The base connection this function is attached to
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._interopCookie">
            <summary>
            Used internally to keep track of memory allocated for aggregate functions
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._contextDataList">
            <summary>
            Internal array used to keep track of aggregate function context data
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._InvokeFunc">
            <summary>
................................................................................
            Holds a reference to the callback function for finalizing an aggregate function
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._CompareFunc">
            <summary>
            Holds a reference to the callback function for collation sequences
            </summary>





        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._registeredFunctions">
            <summary>
            This static list contains all the user-defined functions declared using the proper attributes.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.#ctor">
................................................................................
            <summary>
            Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method.
            </summary>
            <param name="context">A raw context pointer</param>
            <param name="nArgs">Number of arguments passed in</param>
            <param name="argsptr">A pointer to the array of arguments</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.CompareCallback(System.Int32,System.IntPtr,System.Int32,System.IntPtr)">
            <summary>
            Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function.
            </summary>

            <param name="len1">Length of the string pv1</param>
            <param name="ptr1">Pointer to the first string to compare</param>
            <param name="len2">Length of the string pv2</param>
            <param name="ptr2">Pointer to the second string to compare</param>
            <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
            than the second.</returns>
        </member>
................................................................................
            That includes pulling out the user's contextData and updating it after the call is made.  We use a sorted list for this so
            binary searches can be done to find the data.
            </remarks>
            <param name="context">A raw context pointer</param>
            <param name="nArgs">Number of arguments passed in</param>
            <param name="argsptr">A pointer to the array of arguments</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.FinalCallback(System.IntPtr,System.Int32,System.IntPtr)">
            <summary>
            An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method.
            </summary>
            <param name="context">A raw context pointer</param>
            <param name="nArgs">Not used, always zero</param>
            <param name="argsptr">Not used, always zero</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.Dispose(System.Boolean)">
            <summary>
            Placeholder for a user-defined disposal routine
            </summary>
            <param name="disposing">True if the object is being disposed explicitly</param>
        </member>
................................................................................
        <member name="M:System.Data.SQLite.SQLiteFunction.BindFunctions(System.Data.SQLite.SQLiteBase)">
            <summary>
            Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection.
            It is done this way so that all user-defined functions will access the database using the same encoding scheme
            as the connection (UTF-8 or UTF-16).
            </summary>
            <remarks>
            The wrapper functions that interop with SQLite will create a unique cooke value, which internally is a pointer to
            all the wrapped callback functions.  The interop function uses it to map CDecl callbacks to StdCall callbacks.
            </remarks>
            <param name="sqlbase">The base object on which the functions are to bind</param>
            <returns>Returns an array of functions which the connection object should retain until the connection is closed.</returns>
        </member>
        <member name="P:System.Data.SQLite.SQLiteFunction.SQLiteConvert">
            <summary>
            Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert
            strings and DateTime's into the current connection's encoding schema.
            </summary>
        </member>

























































































































































        <member name="T:System.Data.SQLite.SQLiteDataReader">
            <summary>
            SQLite implementation of DbDataReader.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDataReader._command">
            <summary>
................................................................................
            Returns underlying column information on the given view
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteMetaDataCollectionNames.ForeignKeys">
            <summary>
            Returns foreign key information for the given catalog
            </summary>





        </member>
        <member name="T:System.Data.SQLite.SQLiteCommand">
            <summary>
            SQLite implementation of DbCommand.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteCommand._commandText">
................................................................................
        </member>
        <member name="T:System.Data.SQLite.SQLiteBase">
            <summary>
            This internal class provides the foundation of SQLite support.  It defines all the abstract members needed to implement
            a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.Open(System.String,System.Boolean)">
            <summary>
            Opens a database.
            </summary>
            <param name="usePool">If true, the connection can be pulled from the connection pool</param>
            <remarks>
            Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection
            to bind all attributed user-defined functions and collating sequences to the new connection.
            </remarks>
            <param name="strFilename">The filename of the database to open.  SQLite automatically creates it if it doesn't exist.</param>



        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.Close">
            <summary>
            Closes the currently-open database.
            </summary>
            <remarks>
            After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated
................................................................................
            <param name="nTimeoutMS">The number of milliseconds to wait before returning SQLITE_BUSY</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.SQLiteLastError">
            <summary>
            Returns the text of the last error issued by SQLite
            </summary>
            <returns></returns>





        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.Prepare(System.Data.SQLite.SQLiteConnection,System.String,System.Data.SQLite.SQLiteStatement,System.UInt32,System.String@)">
            <summary>
            Prepares a SQL statement for execution.
            </summary>
            <param name="cnn">The source connection preparing the command.  Can be null for any caller except LINQ</param>
            <param name="strSql">The SQL command text to prepare</param>
................................................................................
            which saves space in the database.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DataSource">
            <summary>
            Gets/Sets the filename to open on the connection string.
            </summary>





        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DefaultTimeout">
            <summary>
            Gets/sets the default command timeout for newly-created commands.  This is especially useful for 
            commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible.
            </summary>
        </member>
................................................................................
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.LegacyFormat">
            <summary>
            If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger
            database sizes.
            </summary>





        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.Password">
            <summary>
            Gets/sets the database encryption password
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.PageSize">
................................................................................
            Gets/Sets the cache size for the connection.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DateTimeFormat">
            <summary>
            Gets/Sets the datetime format for the connection.
            </summary>










        </member>
        <member name="T:System.Data.SQLite.SQLite3">
            <summary>
            This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLite3._sql">






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|













>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>







 







|

|







|


|







|
>
>
>
>
>
>
>
>
>












|












>
>
>
>
>
>
>
>
>
>
>
>













|



>







 







|













>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







 







<
<
<
<
<







 







>
>
>
>
>







 







|



>







 







|




<
<







 







|











>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>







 







|



<





>
>
>







 







>
>
>
>
>







 







>
>
>
>
>







 







>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
...
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
...
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
...
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
...
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
...
834
835
836
837
838
839
840





















































































































841
842
843
844
845
846
847
...
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
....
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
....
1256
1257
1258
1259
1260
1261
1262










































1263
1264
1265
1266
1267
1268
1269
....
1279
1280
1281
1282
1283
1284
1285





1286
1287
1288
1289
1290
1291
1292
....
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
....
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
....
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434


1435
1436
1437
1438
1439
1440
1441
....
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
....
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
....
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508

2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
....
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
....
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
....
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
....
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>System.Data.SQLite</name>
    </assembly>
    <members>
        <member name="F:System.Data.SQLite.SQLiteConnectionPool._connections">
            <summary>
            The connection pool object
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnectionPool._poolVersion">
            <summary>
            The default version number new pools will get
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnectionPool.Remove(System.String,System.Int32,System.Int32@)">
            <summary>
            Attempt to pull a pooled connection out of the queue for active duty
            </summary>
            <param name="fileName">The filename for a desired connection</param>
            <param name="maxPoolSize">The maximum size the connection pool for the filename can be</param>
            <param name="version">The pool version the returned connection will belong to</param>
            <returns>Returns NULL if no connections were available.  Even if none are, the poolversion will still be a valid pool version</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnectionPool.ClearAllPools">
            <summary>
            Clears out all pooled connections and rev's up the default pool version to force all old active objects
            not in the pool to get discarded rather than returned to their pools.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnectionPool.ClearPool(System.String)">
            <summary>
            Clear a given pool for a given filename.  Discards anything in the pool for the given file, and revs the pool
            version so current active objects on the old version of the pool will get discarded rather than be returned to the pool.
            </summary>
            <param name="fileName">The filename of the pool to clear</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnectionPool.Add(System.String,System.Data.SQLite.SQLiteConnectionHandle,System.Int32)">
            <summary>
            Return a connection to the pool for someone else to use.
            </summary>
            <param name="fileName">The filename of the pool to use</param>
            <param name="hdl">The connection handle to pool</param>
            <param name="version">The pool version the handle was created under</param>
            <remarks>
            If the version numbers don't match between the connection and the pool, then the handle is discarded.
            </remarks>
        </member>
        <member name="T:System.Data.SQLite.SQLiteConnectionPool.Pool">
            <summary>
            Keeps track of connections made on a specified file.  The PoolVersion dictates whether old objects get
            returned to the pool or discarded when no longer in use.
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteConnection">
            <summary>
            SQLite implentation of DbConnection.
            </summary>
            <remarks>
            The <see cref="P:System.Data.SQLite.SQLiteConnection.ConnectionString">ConnectionString</see> property of the SQLiteConnection class can contain the following parameter(s), delimited with a semi-colon:
            <list type="table">
................................................................................
            <description>N</description>
            <description>0</description>
            </item>
            <item>
            <description>Legacy Format</description>
            <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
            <description>N</description>
            <description>False</description>
            </item>
            <item>
            <description>Default Timeout</description>
            <description>{time in seconds}<br/>The default command timeout</description>
            <description>N</description>
            <description>30</description>
            </item>
            <item>
            <description>Journal Mode</description>
            <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
            <description>N</description>
            <description>Delete</description>
            </item>
            <item>
            <description>Read Only</description>
            <description><b>True</b> - Open the database for read only access<br/><b>False</b> - Open the database for normal read/write access</description>
            <description>N</description>
            <description>False</description>
            </item>
            <item>
            <description>Max Pool Size</description>
            <description>The maximum number of connections for the given connection string that can be in the connection pool</description>
            <description>N</description>
            <description>100</description>
            </item>
            <item>
            <description>Default IsolationLevel</description>
            <description>The default transaciton isolation level</description>
            <description>N</description>
            <description>Serializable</description>
            </item>
            </list>
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._connectionState">
            <summary>
            State of the current connection
            </summary>
................................................................................
            The connection string
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._transactionLevel">
            <summary>
            Nesting level of the transactions open on the connection
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._defaultIsolation">
            <summary>
            The default isolation level for new transactions
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._enlistment">
            <summary>
            Whether or not the connection is enlisted in a distrubuted transaction
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConnection._sql">
................................................................................
            <summary>
            Raises the state change event when the state of the connection changes
            </summary>
            <param name="newState">The new state.  If it is different from the previous state, an event is raised.</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction(System.Data.IsolationLevel,System.Boolean)">
            <summary>
            OBSOLETE.  Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <param name="isolationLevel">This parameter is ignored.</param>
            <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
            When FALSE, a writelock is obtained immediately.  The default is TRUE, but in a multi-threaded multi-writer 
            environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction(System.Boolean)">
            <summary>
            OBSOLETE.  Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
            When FALSE, a writelock is obtained immediately.  The default is false, but in a multi-threaded multi-writer 
            environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction(System.Data.IsolationLevel)">
            <summary>
            Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <param name="isolationLevel">Supported isolation levels are Serializable, ReadCommitted and Unspecified.</param>
            <remarks>
            Unspecified will use the default isolation level specified in the connection string.  If no isolation level is specified in the 
            connection string, Serializable is used.
            Serializable transactions are the default.  In this mode, the engine gets an immediate lock on the database, and no other threads
            may begin a transaction.  Other threads may read from the database, but not write.
            With a ReadCommitted isolation level, locks are deferred and elevated as needed.  It is possible for multiple threads to start
            a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread
            has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached.
            </remarks>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginTransaction">
            <summary>
            Creates a new SQLiteTransaction if one isn't already active on the connection.
            </summary>
            <returns>Returns a SQLiteTransaction object.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.BeginDbTransaction(System.Data.IsolationLevel)">
            <summary>
            Forwards to the local BeginTransaction() function
            </summary>
            <param name="isolationLevel">Supported isolation levels are Unspecified, Serializable, and ReadCommitted</param>
            <returns></returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.ChangeDatabase(System.String)">
            <summary>
            Not implemented
            </summary>
            <param name="databaseName"></param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.Close">
            <summary>
            When the database connection is closed, all commands linked to this connection are automatically reset.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.ClearPool(System.Data.SQLite.SQLiteConnection)">
            <summary>
            Clears the connection pool associated with the connection.  Any other active connections using the same database file
            will be discarded instead of returned to the pool when they are closed.
            </summary>
            <param name="connection"></param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.ClearAllPools">
            <summary>
            Clears all connection pools.  Any active connections will be discarded instead of sent to the pool when they are closed.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.CreateCommand">
            <summary>
            Create a new SQLiteCommand and associate it with this connection.
            </summary>
            <returns>Returns an instantiated SQLiteCommand object already assigned to this connection.</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.CreateDbCommand">
            <summary>
            Forwards to the local CreateCommand() function
            </summary>
            <returns></returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.ParseConnectionString(System.String)">
            <summary>
            Parses the connection string into component parts
            </summary>
            <param name="connectionString">The connection string to parse</param>
            <returns>An array of key-value pairs representing each parameter of the connection string</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConnection.EnlistTransaction(System.Transactions.Transaction)">
            <summary>
            Manual distributed transaction enlistment support
            </summary>
            <param name="transaction">The distributed transaction to enlist in</param>
................................................................................
            <description>N</description>
            <description>0</description>
            </item>
            <item>
            <description>Legacy Format</description>
            <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
            <description>N</description>
            <description>False</description>
            </item>
            <item>
            <description>Default Timeout</description>
            <description>{time in seconds}<br/>The default command timeout</description>
            <description>N</description>
            <description>30</description>
            </item>
            <item>
            <description>Journal Mode</description>
            <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
            <description>N</description>
            <description>Delete</description>
            </item>
            <item>
            <description>Read Only</description>
            <description><b>True</b> - Open the database for read only access<br/><b>False</b> - Open the database for normal read/write access</description>
            <description>N</description>
            <description>False</description>
            </item>
            <item>
            <description>Max Pool Size</description>
            <description>The maximum number of connections for the given connection string that can be in the connection pool</description>
            <description>N</description>
            <description>100</description>
            </item>
            <item>
            <description>Default IsolationLevel</description>
            <description>The default transaciton isolation level</description>
            <description>N</description>
            <description>Serializable</description>
            </item>
            </list>
            </remarks>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnection.DataSource">
            <summary>
            Returns the filename without extension or path
            </summary>
................................................................................
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteDataAdapter.DeleteCommand">
            <summary>
            Gets/sets the delete command for this DataAdapter
            </summary>
        </member>





















































































































        <member name="T:System.Data.SQLite.SQLiteConvert">
            <summary>
            This base class provides datatype conversion services for the SQLite provider.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteConvert._datetimeFormats">
            <summary>
................................................................................
            [3] Five<br/>
            <br/>
            Note that the leading and trailing spaces were removed from each item during the split.
            </remarks>
            <param name="source">Source string to split apart</param>
            <param name="separator">Separator character</param>
            <returns>A string array of the split up elements</returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConvert.ToBoolean(System.Object)">
            <summary>
            Convert a value to true or false.
            </summary>
            <param name="source">A string or number representing true or false</param>
            <returns></returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConvert.ToBoolean(System.String)">
            <summary>
            Convert a string to true or false.
            </summary>
            <param name="source">A string representing true or false</param>
            <returns></returns>
            <remarks>
            "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be
            converted to a proper boolean value.
            </remarks>
        </member>
        <member name="M:System.Data.SQLite.SQLiteConvert.ColumnToType(System.Data.SQLite.SQLiteStatement,System.Int32,System.Data.SQLite.SQLiteType)">
            <summary>
            Determines the data type of a column in a statement
            </summary>
            <param name="stmt">The statement to retrieve information for</param>
            <param name="i">The column to retrieve type information on</param>
................................................................................
        </member>
        <member name="M:System.Data.SQLite.SQLiteConvert.TypeNameToDbType(System.String)">
            <summary>
            For a given type name, return a closest-match .NET type
            </summary>
            <param name="Name">The name of the type to match</param>
            <returns>The .NET DBType the text evaluates to.</returns>
        </member>
        <member name="T:System.Data.SQLite.TypeAffinity">
            <summary>
            SQLite has very limited types, and is inherently text-based.  The first 5 types below represent the sum of all types SQLite
            understands.  The DateTime extension to the spec is for internal use only.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Uninitialized">
            <summary>
            Not used
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Int64">
            <summary>
            All integers in SQLite default to Int64
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Double">
            <summary>
            All floating point numbers in SQLite default to double
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Text">
            <summary>
            The default data type of SQLite is text
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Blob">
            <summary>
            Typically blob types are only seen when returned from a function
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.Null">
            <summary>
            Null types can be returned from functions
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.DateTime">
            <summary>
            Used internally by this provider
            </summary>
        </member>
        <member name="F:System.Data.SQLite.TypeAffinity.None">
            <summary>
            Used internally
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteDateFormats">
            <summary>
            This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats.  Ticks, ISO8601
            and JulianDay.
            </summary>
            <remarks>
            ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second.
            JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools.  It is
            not readable as text without post-processing.
            Ticks less compatible with 3rd party tools that query the database, and renders the DateTime field unreadable as text without post-processing.
            
            The preferred order of choosing a datetime format is JulianDay, ISO8601, and then Ticks.  Ticks is mainly present for legacy 
            code support.
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDateFormats.Ticks">
            <summary>
            Using ticks is not recommended and is not well supported with LINQ.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDateFormats.ISO8601">
            <summary>
            The default format for this provider.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDateFormats.JulianDay">
            <summary>
            JulianDay format, which is what SQLite uses internally
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteJournalModeEnum">
            <summary>
            This enum determines how SQLite treats its journal file.
            </summary>
            <remarks>
            By default SQLite will create and delete the journal file when needed during a transaction.
            However, for some computers running certain filesystem monitoring tools, the rapid
            creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite.
            
            If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file"
            when starting a transaction.  If this is happening, you may want to change the default journal mode to Persist.
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Delete">
            <summary>
            The default mode, this causes SQLite to create and destroy the journal file as-needed.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Persist">
            <summary>
            When this is set, SQLite will keep the journal file even after a transaction has completed.  It's contents will be erased,
            and the journal re-used as often as needed.  If it is deleted, it will be recreated the next time it is needed.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Off">
            <summary>
            This option disables the rollback journal entirely.  Interrupted transactions or a program crash can cause database
            corruption in this mode!
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteType">
            <summary>
            Struct used internally to determine the datatype of a column in a resultset
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteType.Type">
            <summary>
            The DbType of the column, or DbType.Object if it cannot be determined
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteType.Affinity">
            <summary>
            The affinity of a column, used for expressions or when Type is DbType.Object
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteTransaction">
            <summary>
            SQLite implementation of DbTransaction.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteTransaction._cnn">
................................................................................
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteKeyReader.KeyQuery">
            <summary>
            A single sub-query for a given table/database.
            </summary>
        </member>










































        <member name="T:System.Data.SQLite.SQLiteFunction">
            <summary>
            This abstract class is designed to handle user-defined functions easily.  An instance of the derived class is made for each
            connection to the database.
            </summary>
            <remarks>
            Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access
................................................................................
            </remarks>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._base">
            <summary>
            The base connection this function is attached to
            </summary>
        </member>





        <member name="F:System.Data.SQLite.SQLiteFunction._contextDataList">
            <summary>
            Internal array used to keep track of aggregate function context data
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._InvokeFunc">
            <summary>
................................................................................
            Holds a reference to the callback function for finalizing an aggregate function
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._CompareFunc">
            <summary>
            Holds a reference to the callback function for collation sequences
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._context">
            <summary>
            Current context of the current callback.  Only valid during a callback
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteFunction._registeredFunctions">
            <summary>
            This static list contains all the user-defined functions declared using the proper attributes.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.#ctor">
................................................................................
            <summary>
            Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method.
            </summary>
            <param name="context">A raw context pointer</param>
            <param name="nArgs">Number of arguments passed in</param>
            <param name="argsptr">A pointer to the array of arguments</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.CompareCallback(System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.IntPtr)">
            <summary>
            Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function.
            </summary>
            <param name="ptr">Not used</param>
            <param name="len1">Length of the string pv1</param>
            <param name="ptr1">Pointer to the first string to compare</param>
            <param name="len2">Length of the string pv2</param>
            <param name="ptr2">Pointer to the second string to compare</param>
            <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
            than the second.</returns>
        </member>
................................................................................
            That includes pulling out the user's contextData and updating it after the call is made.  We use a sorted list for this so
            binary searches can be done to find the data.
            </remarks>
            <param name="context">A raw context pointer</param>
            <param name="nArgs">Number of arguments passed in</param>
            <param name="argsptr">A pointer to the array of arguments</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.FinalCallback(System.IntPtr)">
            <summary>
            An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method.
            </summary>
            <param name="context">A raw context pointer</param>


        </member>
        <member name="M:System.Data.SQLite.SQLiteFunction.Dispose(System.Boolean)">
            <summary>
            Placeholder for a user-defined disposal routine
            </summary>
            <param name="disposing">True if the object is being disposed explicitly</param>
        </member>
................................................................................
        <member name="M:System.Data.SQLite.SQLiteFunction.BindFunctions(System.Data.SQLite.SQLiteBase)">
            <summary>
            Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection.
            It is done this way so that all user-defined functions will access the database using the same encoding scheme
            as the connection (UTF-8 or UTF-16).
            </summary>
            <remarks>
            The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to
            all the wrapped callback functions.  The interop function uses it to map CDecl callbacks to StdCall callbacks.
            </remarks>
            <param name="sqlbase">The base object on which the functions are to bind</param>
            <returns>Returns an array of functions which the connection object should retain until the connection is closed.</returns>
        </member>
        <member name="P:System.Data.SQLite.SQLiteFunction.SQLiteConvert">
            <summary>
            Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert
            strings and DateTime's into the current connection's encoding schema.
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteFunctionEx">
            <summary>
            Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call.
            </summary>
            <remarks>
            User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays.
            </remarks>
        </member>
        <member name="M:System.Data.SQLite.SQLiteFunctionEx.GetCollationSequence">
            <summary>
            Obtains the collating sequence in effect for the given function.
            </summary>
            <remarks>
            As an optimization, SQLite does not fill in this information when calling functions, unless the NeedCollationSequence
            boolean value is set to true in the SQLiteFunctionAttribute.
            </remarks>
            <returns></returns>
        </member>
        <member name="T:System.Data.SQLite.FunctionType">
            <summary>
            The type of user-defined function to declare
            </summary>
        </member>
        <member name="F:System.Data.SQLite.FunctionType.Scalar">
            <summary>
            Scalar functions are designed to be called and return a result immediately.  Examples include ABS(), Upper(), Lower(), etc.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.FunctionType.Aggregate">
            <summary>
            Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data.
            Examples include SUM(), COUNT(), AVG(), etc.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.FunctionType.Collation">
            <summary>
            Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause.  Typically text in an ORDER BY is
            sorted using a straight case-insensitive comparison function.  Custom collating sequences can be used to alter the behavior of text sorting
            in a user-defined manner.
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteCallback">
            <summary>
            An internal callback delegate declaration.
            </summary>
            <param name="context">Raw context pointer for the user function</param>
            <param name="nArgs">Count of arguments to the function</param>
            <param name="argsptr">A pointer to the array of argument pointers</param>
        </member>
        <member name="T:System.Data.SQLite.SQLiteFinalCallback">
            <summary>
            An internal final callback delegate declaration.
            </summary>
            <param name="context">Raw context pointer for the user function</param>
        </member>
        <member name="T:System.Data.SQLite.SQLiteCollation">
            <summary>
            Internal callback delegate for implementing collation sequences
            </summary>
            <param name="puser">Not used</param>
            <param name="len1">Length of the string pv1</param>
            <param name="pv1">Pointer to the first string to compare</param>
            <param name="len2">Length of the string pv2</param>
            <param name="pv2">Pointer to the second string to compare</param>
            <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
            than the second.</returns>
        </member>
        <member name="T:System.Data.SQLite.CollationTypeEnum">
            <summary>
            The type of collating sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationTypeEnum.Binary">
            <summary>
            The built-in BINARY collating sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationTypeEnum.NoCase">
            <summary>
            The built-in NOCASE collating sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationTypeEnum.Reverse">
            <summary>
            The built-in REVERSE collating sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationTypeEnum.Custom">
            <summary>
            A custom user-defined collating sequence
            </summary>
        </member>
        <member name="T:System.Data.SQLite.CollationEncodingEnum">
            <summary>
            The encoding type the collation sequence uses
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationEncodingEnum.UTF8">
            <summary>
            The collation sequence is UTF8
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationEncodingEnum.UTF16LE">
            <summary>
            The collation sequence is UTF16 little-endian
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationEncodingEnum.UTF16BE">
            <summary>
            The collation sequence is UTF16 big-endian
            </summary>
        </member>
        <member name="T:System.Data.SQLite.CollationSequence">
            <summary>
            A struct describing the collating sequence a function is executing in
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationSequence.Name">
            <summary>
            The name of the collating sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationSequence.Type">
            <summary>
            The type of collating sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationSequence.Encoding">
            <summary>
            The text encoding of the collation sequence
            </summary>
        </member>
        <member name="F:System.Data.SQLite.CollationSequence._func">
            <summary>
            Context of the function that requested the collating sequence
            </summary>
        </member>
        <member name="M:System.Data.SQLite.CollationSequence.Compare(System.String,System.String)">
            <summary>
            Calls the base collating sequence to compare two strings
            </summary>
            <param name="s1">The first string to compare</param>
            <param name="s2">The second string to compare</param>
            <returns>-1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2</returns>
        </member>
        <member name="M:System.Data.SQLite.CollationSequence.Compare(System.Char[],System.Char[])">
            <summary>
            Calls the base collating sequence to compare two character arrays
            </summary>
            <param name="c1">The first array to compare</param>
            <param name="c2">The second array to compare</param>
            <returns>-1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2</returns>
        </member>
        <member name="T:System.Data.SQLite.SQLiteDataReader">
            <summary>
            SQLite implementation of DbDataReader.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteDataReader._command">
            <summary>
................................................................................
            Returns underlying column information on the given view
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteMetaDataCollectionNames.ForeignKeys">
            <summary>
            Returns foreign key information for the given catalog
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteMetaDataCollectionNames.Triggers">
            <summary>
            Returns the triggers on the database
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLiteCommand">
            <summary>
            SQLite implementation of DbCommand.
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLiteCommand._commandText">
................................................................................
        </member>
        <member name="T:System.Data.SQLite.SQLiteBase">
            <summary>
            This internal class provides the foundation of SQLite support.  It defines all the abstract members needed to implement
            a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite.
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.Open(System.String,System.Data.SQLite.SQLiteOpenFlagsEnum,System.Int32,System.Boolean)">
            <summary>
            Opens a database.
            </summary>

            <remarks>
            Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection
            to bind all attributed user-defined functions and collating sequences to the new connection.
            </remarks>
            <param name="strFilename">The filename of the database to open.  SQLite automatically creates it if it doesn't exist.</param>
            <param name="flags">The open flags to use when creating the connection</param>
            <param name="maxPoolSize">The maximum size of the pool for the given filename</param>
            <param name="usePool">If true, the connection can be pulled from the connection pool</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.Close">
            <summary>
            Closes the currently-open database.
            </summary>
            <remarks>
            After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated
................................................................................
            <param name="nTimeoutMS">The number of milliseconds to wait before returning SQLITE_BUSY</param>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.SQLiteLastError">
            <summary>
            Returns the text of the last error issued by SQLite
            </summary>
            <returns></returns>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.ClearPool">
            <summary>
            When pooling is enabled, force this connection to be disposed rather than returned to the pool
            </summary>
        </member>
        <member name="M:System.Data.SQLite.SQLiteBase.Prepare(System.Data.SQLite.SQLiteConnection,System.String,System.Data.SQLite.SQLiteStatement,System.UInt32,System.String@)">
            <summary>
            Prepares a SQL statement for execution.
            </summary>
            <param name="cnn">The source connection preparing the command.  Can be null for any caller except LINQ</param>
            <param name="strSql">The SQL command text to prepare</param>
................................................................................
            which saves space in the database.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DataSource">
            <summary>
            Gets/Sets the filename to open on the connection string.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.Uri">
            <summary>
            An alternate to the data source property
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DefaultTimeout">
            <summary>
            Gets/sets the default command timeout for newly-created commands.  This is especially useful for 
            commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible.
            </summary>
        </member>
................................................................................
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.LegacyFormat">
            <summary>
            If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger
            database sizes.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.ReadOnly">
            <summary>
            When enabled, the database will be opened for read-only access and writing will be disabled.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.Password">
            <summary>
            Gets/sets the database encryption password
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.PageSize">
................................................................................
            Gets/Sets the cache size for the connection.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DateTimeFormat">
            <summary>
            Gets/Sets the datetime format for the connection.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.JournalMode">
            <summary>
            Determines how SQLite handles the transaction journal file.
            </summary>
        </member>
        <member name="P:System.Data.SQLite.SQLiteConnectionStringBuilder.DefaultIsolationLevel">
            <summary>
            Sets the default isolation level for transactions on the connection.
            </summary>
        </member>
        <member name="T:System.Data.SQLite.SQLite3">
            <summary>
            This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET
            </summary>
        </member>
        <member name="F:System.Data.SQLite.SQLite3._sql">

Changes to bin/System.Data.SQLite.dll.

cannot compute difference between binary files

Changes to bin/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to bin/itanium/System.Data.SQLite.DLL.

cannot compute difference between binary files

Changes to bin/itanium/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to bin/test.exe.

cannot compute difference between binary files

Changes to bin/x64/System.Data.SQLite.DLL.

cannot compute difference between binary files

Changes to bin/x64/System.Data.SQLite.lib.

cannot compute difference between binary files