System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 61eb9c3f0b3b1f59d59a16059a06530511400461:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 20 0d 0a  soft.com).. * ..
00b0: 20 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74   * Released to t
00c0: 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e  he public domain
00d0: 2c 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77  , use at your ow
00e0: 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a  n risk!.. ******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65  **/....namespace
0130: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0140: 69 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20  ite..{..  using 
0150: 53 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67  System;..  using
0160: 20 53 79 73 74 65 6d 2e 44 61 74 61 3b 0d 0a 20   System.Data;.. 
0170: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 61   using System.Da
0180: 74 61 2e 43 6f 6d 6d 6f 6e 3b 0d 0a 20 20 75 73  ta.Common;..  us
0190: 69 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e  ing System.Diagn
01a0: 6f 73 74 69 63 73 3b 0d 0a 20 20 75 73 69 6e 67  ostics;..  using
01b0: 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69   System.Collecti
01c0: 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20  ons.Generic;..  
01d0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6d  using System.Com
01e0: 70 6f 6e 65 6e 74 4d 6f 64 65 6c 3b 0d 0a 0d 0a  ponentModel;....
01f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0200: 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6d  .  /// SQLite im
0210: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
0220: 44 62 43 6f 6d 6d 61 6e 64 2e 0d 0a 20 20 2f 2f  DbCommand...  //
0230: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69  / </summary>..#i
0240: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
0250: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
0260: 5b 44 65 73 69 67 6e 65 72 28 22 53 51 4c 69 74  [Designer("SQLit
0270: 65 2e 44 65 73 69 67 6e 65 72 2e 53 51 4c 69 74  e.Designer.SQLit
0280: 65 43 6f 6d 6d 61 6e 64 44 65 73 69 67 6e 65 72  eCommandDesigner
0290: 2c 20 53 51 4c 69 74 65 2e 44 65 73 69 67 6e 65  , SQLite.Designe
02a0: 72 2c 20 56 65 72 73 69 6f 6e 3d 22 20 2b 20 53  r, Version=" + S
02b0: 51 4c 69 74 65 33 2e 44 65 73 69 67 6e 65 72 56  QLite3.DesignerV
02c0: 65 72 73 69 6f 6e 20 2b 20 22 2c 20 43 75 6c 74  ersion + ", Cult
02d0: 75 72 65 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62  ure=neutral, Pub
02e0: 6c 69 63 4b 65 79 54 6f 6b 65 6e 3d 64 62 39 33  licKeyToken=db93
02f0: 37 62 63 32 64 34 34 66 66 31 33 39 22 29 2c 20  7bc2d44ff139"), 
0300: 54 6f 6f 6c 62 6f 78 49 74 65 6d 28 74 72 75 65  ToolboxItem(true
0310: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 70 75  )]..#endif..  pu
0320: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
0330: 73 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20  s SQLiteCommand 
0340: 3a 20 44 62 43 6f 6d 6d 61 6e 64 2c 20 49 43 6c  : DbCommand, ICl
0350: 6f 6e 65 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20  oneable..  {..  
0360: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0370: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
0380: 61 75 6c 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ault connection 
0390: 73 74 72 69 6e 67 20 74 6f 20 62 65 20 75 73 65  string to be use
03a0: 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  d when creating 
03b0: 61 20 74 65 6d 70 6f 72 61 72 79 0d 0a 20 20 20  a temporary..   
03c0: 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   /// connection 
03d0: 74 6f 20 65 78 65 63 75 74 65 20 61 20 63 6f 6d  to execute a com
03e0: 6d 61 6e 64 20 76 69 61 20 74 68 65 20 73 74 61  mand via the sta
03f0: 74 69 63 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  tic..    /// <se
0400: 65 20 63 72 65 66 3d 22 45 78 65 63 75 74 65 28  e cref="Execute(
0410: 73 74 72 69 6e 67 2c 53 51 4c 69 74 65 45 78 65  string,SQLiteExe
0420: 63 75 74 65 54 79 70 65 2c 73 74 72 69 6e 67 2c  cuteType,string,
0430: 6f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6f 72  object[])" /> or
0440: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
0450: 72 65 66 3d 22 45 78 65 63 75 74 65 28 73 74 72  ref="Execute(str
0460: 69 6e 67 2c 53 51 4c 69 74 65 45 78 65 63 75 74  ing,SQLiteExecut
0470: 65 54 79 70 65 2c 43 6f 6d 6d 61 6e 64 42 65 68  eType,CommandBeh
0480: 61 76 69 6f 72 2c 73 74 72 69 6e 67 2c 6f 62 6a  avior,string,obj
0490: 65 63 74 5b 5d 29 22 20 2f 3e 0d 0a 20 20 20 20  ect[])" />..    
04a0: 2f 2f 2f 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20  /// methods...  
04b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
04c0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
04d0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
04e0: 72 69 6e 67 20 44 65 66 61 75 6c 74 43 6f 6e 6e  ring DefaultConn
04f0: 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 22  ectionString = "
0500: 44 61 74 61 20 53 6f 75 72 63 65 3d 3a 6d 65 6d  Data Source=:mem
0510: 6f 72 79 3a 3b 22 3b 0d 0a 0d 0a 20 20 20 20 2f  ory:;";....    /
0520: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0530: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e    /// The comman
0540: 64 20 74 65 78 74 20 74 68 69 73 20 63 6f 6d 6d  d text this comm
0550: 61 6e 64 20 69 73 20 62 61 73 65 64 20 6f 6e 0d  and is based on.
0560: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0570: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0580: 20 73 74 72 69 6e 67 20 5f 63 6f 6d 6d 61 6e 64   string _command
0590: 54 65 78 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Text;..    /// <
05a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
05b0: 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
05c0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20   the command is 
05d0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
05e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
05f0: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0600: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
0610: 6e 20 5f 63 6e 6e 3b 0d 0a 20 20 20 20 2f 2f 2f  n _cnn;..    ///
0620: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0630: 2f 2f 2f 20 54 68 65 20 76 65 72 73 69 6f 6e 20  /// The version 
0640: 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  of the connectio
0650: 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  n the command is
0660: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
0670: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0680: 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  ary>..    privat
0690: 65 20 69 6e 74 20 5f 76 65 72 73 69 6f 6e 3b 0d  e int _version;.
06a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
06b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 64 69  y>..    /// Indi
06c0: 63 61 74 65 73 20 77 68 65 74 68 65 72 20 6f 72  cates whether or
06d0: 20 6e 6f 74 20 61 20 44 61 74 61 52 65 61 64 65   not a DataReade
06e0: 72 20 69 73 20 61 63 74 69 76 65 20 6f 6e 20 74  r is active on t
06f0: 68 65 20 63 6f 6d 6d 61 6e 64 2e 0d 0a 20 20 20  he command...   
0700: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0710: 0a 20 20 20 20 70 72 69 76 61 74 65 20 57 65 61  .    private Wea
0720: 6b 52 65 66 65 72 65 6e 63 65 20 5f 61 63 74 69  kReference _acti
0730: 76 65 52 65 61 64 65 72 3b 0d 0a 20 20 20 20 2f  veReader;..    /
0740: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0750: 20 20 2f 2f 2f 20 54 68 65 20 74 69 6d 65 6f 75    /// The timeou
0760: 74 20 66 6f 72 20 74 68 65 20 63 6f 6d 6d 61 6e  t for the comman
0770: 64 2c 20 6b 6c 75 64 67 65 64 20 62 65 63 61 75  d, kludged becau
0780: 73 65 20 53 51 4c 69 74 65 20 64 6f 65 73 6e 27  se SQLite doesn'
0790: 74 20 73 75 70 70 6f 72 74 20 70 65 72 2d 63 6f  t support per-co
07a0: 6d 6d 61 6e 64 20 74 69 6d 65 6f 75 74 20 76 61  mmand timeout va
07b0: 6c 75 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lues..    /// </
07c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
07d0: 74 65 72 6e 61 6c 20 69 6e 74 20 5f 63 6f 6d 6d  ternal int _comm
07e0: 61 6e 64 54 69 6d 65 6f 75 74 3b 0d 0a 20 20 20  andTimeout;..   
07f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0800: 20 20 20 20 2f 2f 2f 20 44 65 73 69 67 6e 65 72      /// Designer
0810: 20 73 75 70 70 6f 72 74 0d 0a 20 20 20 20 2f 2f   support..    //
0820: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0830: 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f    private bool _
0840: 64 65 73 69 67 6e 54 69 6d 65 56 69 73 69 62 6c  designTimeVisibl
0850: 65 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  e;..    /// <sum
0860: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
0870: 73 65 64 20 62 79 20 44 62 44 61 74 61 41 64 61  sed by DbDataAda
0880: 70 74 65 72 20 74 6f 20 64 65 74 65 72 6d 69 6e  pter to determin
0890: 65 20 75 70 64 61 74 69 6e 67 20 62 65 68 61 76  e updating behav
08a0: 69 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ior..    /// </s
08b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
08c0: 76 61 74 65 20 55 70 64 61 74 65 52 6f 77 53 6f  vate UpdateRowSo
08d0: 75 72 63 65 20 5f 75 70 64 61 74 65 52 6f 77 53  urce _updateRowS
08e0: 6f 75 72 63 65 3b 0d 0a 20 20 20 20 2f 2f 2f 20  ource;..    /// 
08f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0900: 2f 2f 20 54 68 65 20 63 6f 6c 6c 65 63 74 69 6f  // The collectio
0910: 6e 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 20  n of parameters 
0920: 66 6f 72 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0d  for the command.
0930: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0940: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0950: 20 53 51 4c 69 74 65 50 61 72 61 6d 65 74 65 72   SQLiteParameter
0960: 43 6f 6c 6c 65 63 74 69 6f 6e 20 5f 70 61 72 61  Collection _para
0970: 6d 65 74 65 72 43 6f 6c 6c 65 63 74 69 6f 6e 3b  meterCollection;
0980: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0990: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
09a0: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 20 74 65 78   SQL command tex
09b0: 74 2c 20 62 72 6f 6b 65 6e 20 69 6e 74 6f 20 69  t, broken into i
09c0: 6e 64 69 76 69 64 75 61 6c 20 53 51 4c 20 73 74  ndividual SQL st
09d0: 61 74 65 6d 65 6e 74 73 20 61 73 20 74 68 65 79  atements as they
09e0: 20 61 72 65 20 65 78 65 63 75 74 65 64 0d 0a 20   are executed.. 
09f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0a00: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
0a10: 4c 69 73 74 3c 53 51 4c 69 74 65 53 74 61 74 65  List<SQLiteState
0a20: 6d 65 6e 74 3e 20 5f 73 74 61 74 65 6d 65 6e 74  ment> _statement
0a30: 4c 69 73 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  List;..    /// <
0a40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0a50: 2f 20 55 6e 70 72 6f 63 65 73 73 65 64 20 53 51  / Unprocessed SQ
0a60: 4c 20 74 65 78 74 20 74 68 61 74 20 68 61 73 20  L text that has 
0a70: 6e 6f 74 20 62 65 65 6e 20 65 78 65 63 75 74 65  not been execute
0a80: 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  d..    /// </sum
0a90: 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
0aa0: 6e 61 6c 20 73 74 72 69 6e 67 20 5f 72 65 6d 61  nal string _rema
0ab0: 69 6e 69 6e 67 54 65 78 74 3b 0d 0a 20 20 20 20  iningText;..    
0ac0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0ad0: 20 20 20 2f 2f 2f 20 54 72 61 6e 73 61 63 74 69     /// Transacti
0ae0: 6f 6e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  on associated wi
0af0: 74 68 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 0d  th this command.
0b00: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0b10: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0b20: 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69   SQLiteTransacti
0b30: 6f 6e 20 5f 74 72 61 6e 73 61 63 74 69 6f 6e 3b  on _transaction;
0b40: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 3c 6f 76 65 72  ....    ///<over
0b50: 6c 6f 61 64 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  loads>..    /// 
0b60: 43 6f 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77  Constructs a new
0b70: 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 0d 0a   SQLiteCommand..
0b80: 20 20 20 20 2f 2f 2f 20 3c 2f 6f 76 65 72 6c 6f      /// </overlo
0b90: 61 64 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  ads>..    /// <s
0ba0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0bb0: 20 44 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 75   Default constru
0bc0: 63 74 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ctor..    /// </
0bd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
0be0: 62 6c 69 63 20 53 51 4c 69 74 65 43 6f 6d 6d 61  blic SQLiteComma
0bf0: 6e 64 28 29 20 3a 74 68 69 73 28 6e 75 6c 6c 2c  nd() :this(null,
0c00: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20   null)..    {.. 
0c10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
0c20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0c30: 2f 2f 20 49 6e 69 74 69 61 6c 69 7a 65 73 20 74  // Initializes t
0c40: 68 65 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20  he command with 
0c50: 74 68 65 20 67 69 76 65 6e 20 63 6f 6d 6d 61 6e  the given comman
0c60: 64 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f 20  d text..    /// 
0c70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0c80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0c90: 22 63 6f 6d 6d 61 6e 64 54 65 78 74 22 3e 54 68  "commandText">Th
0ca0: 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 20 74 65  e SQL command te
0cb0: 78 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  xt</param>..    
0cc0: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 43 6f 6d  public SQLiteCom
0cd0: 6d 61 6e 64 28 73 74 72 69 6e 67 20 63 6f 6d 6d  mand(string comm
0ce0: 61 6e 64 54 65 78 74 29 20 0d 0a 20 20 20 20 20  andText) ..     
0cf0: 20 3a 20 74 68 69 73 28 63 6f 6d 6d 61 6e 64 54   : this(commandT
0d00: 65 78 74 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29  ext, null, null)
0d10: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 7d 0d 0a  ..    {..    }..
0d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0d30: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69  ry>..    /// Ini
0d40: 74 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6d  tializes the com
0d50: 6d 61 6e 64 20 77 69 74 68 20 74 68 65 20 67 69  mand with the gi
0d60: 76 65 6e 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 20  ven SQL command 
0d70: 74 65 78 74 20 61 6e 64 20 61 74 74 61 63 68 20  text and attach 
0d80: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 74  the command to t
0d90: 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
0da0: 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e    /// connection
0db0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
0dc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
0dd0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d 6d  param name="comm
0de0: 61 6e 64 54 65 78 74 22 3e 54 68 65 20 53 51 4c  andText">The SQL
0df0: 20 63 6f 6d 6d 61 6e 64 20 74 65 78 74 3c 2f 70   command text</p
0e00: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
0e10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e  param name="conn
0e20: 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e  ection">The conn
0e30: 65 63 74 69 6f 6e 20 74 6f 20 61 73 73 6f 63 69  ection to associ
0e40: 61 74 65 20 77 69 74 68 20 74 68 65 20 63 6f 6d  ate with the com
0e50: 6d 61 6e 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  mand</param>..  
0e60: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 43    public SQLiteC
0e70: 6f 6d 6d 61 6e 64 28 73 74 72 69 6e 67 20 63 6f  ommand(string co
0e80: 6d 6d 61 6e 64 54 65 78 74 2c 20 53 51 4c 69 74  mmandText, SQLit
0e90: 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
0ea0: 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 3a  ection)..      :
0eb0: 20 74 68 69 73 28 63 6f 6d 6d 61 6e 64 54 65 78   this(commandTex
0ec0: 74 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 6e  t, connection, n
0ed0: 75 6c 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ull)..    {..   
0ee0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
0ef0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0f00: 20 49 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65   Initializes the
0f10: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 61 73 73   command and ass
0f20: 6f 63 69 61 74 65 73 20 69 74 20 77 69 74 68 20  ociates it with 
0f30: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f  the specified co
0f40: 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  nnection...    /
0f50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0f60: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
0f70: 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
0f80: 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  The connection t
0f90: 6f 20 61 73 73 6f 63 69 61 74 65 20 77 69 74 68  o associate with
0fa0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 3c 2f 70 61   the command</pa
0fb0: 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ram>..    public
0fc0: 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 53   SQLiteCommand(S
0fd0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  QLiteConnection 
0fe0: 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 0d 0a 20 20  connection) ..  
0ff0: 20 20 20 20 3a 20 74 68 69 73 28 6e 75 6c 6c 2c      : this(null,
1000: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 6e 75 6c   connection, nul
1010: 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 7d  l)..    {..    }
1020: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
1030: 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 53 51  SQLiteCommand(SQ
1040: 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 73 6f 75 72  LiteCommand sour
1050: 63 65 29 20 3a 20 74 68 69 73 28 73 6f 75 72 63  ce) : this(sourc
1060: 65 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 2c 20 73  e.CommandText, s
1070: 6f 75 72 63 65 2e 43 6f 6e 6e 65 63 74 69 6f 6e  ource.Connection
1080: 2c 20 73 6f 75 72 63 65 2e 54 72 61 6e 73 61 63  , source.Transac
1090: 74 69 6f 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  tion)..    {..  
10a0: 20 20 20 20 43 6f 6d 6d 61 6e 64 54 69 6d 65 6f      CommandTimeo
10b0: 75 74 20 3d 20 73 6f 75 72 63 65 2e 43 6f 6d 6d  ut = source.Comm
10c0: 61 6e 64 54 69 6d 65 6f 75 74 3b 0d 0a 20 20 20  andTimeout;..   
10d0: 20 20 20 44 65 73 69 67 6e 54 69 6d 65 56 69 73     DesignTimeVis
10e0: 69 62 6c 65 20 3d 20 73 6f 75 72 63 65 2e 44 65  ible = source.De
10f0: 73 69 67 6e 54 69 6d 65 56 69 73 69 62 6c 65 3b  signTimeVisible;
1100: 0d 0a 20 20 20 20 20 20 55 70 64 61 74 65 64 52  ..      UpdatedR
1110: 6f 77 53 6f 75 72 63 65 20 3d 20 73 6f 75 72 63  owSource = sourc
1120: 65 2e 55 70 64 61 74 65 64 52 6f 77 53 6f 75 72  e.UpdatedRowSour
1130: 63 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 66 6f 72  ce;....      for
1140: 65 61 63 68 20 28 53 51 4c 69 74 65 50 61 72 61  each (SQLitePara
1150: 6d 65 74 65 72 20 70 61 72 61 6d 20 69 6e 20 73  meter param in s
1160: 6f 75 72 63 65 2e 5f 70 61 72 61 6d 65 74 65 72  ource._parameter
1170: 43 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20  Collection)..   
1180: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 50 61     {..        Pa
1190: 72 61 6d 65 74 65 72 73 2e 41 64 64 28 70 61 72  rameters.Add(par
11a0: 61 6d 2e 43 6c 6f 6e 65 28 29 29 3b 0d 0a 20 20  am.Clone());..  
11b0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
11c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74 69  >..    /// Initi
11e0: 61 6c 69 7a 65 73 20 61 20 63 6f 6d 6d 61 6e 64  alizes a command
11f0: 20 77 69 74 68 20 74 68 65 20 67 69 76 65 6e 20   with the given 
1200: 53 51 4c 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  SQL, connection 
1210: 61 6e 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 0d  and transaction.
1220: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1230: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
1240: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d 6d 61 6e  ram name="comman
1250: 64 54 65 78 74 22 3e 54 68 65 20 53 51 4c 20 63  dText">The SQL c
1260: 6f 6d 6d 61 6e 64 20 74 65 78 74 3c 2f 70 61 72  ommand text</par
1270: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
1280: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
1290: 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63  tion">The connec
12a0: 74 69 6f 6e 20 74 6f 20 61 73 73 6f 63 69 61 74  tion to associat
12b0: 65 20 77 69 74 68 20 74 68 65 20 63 6f 6d 6d 61  e with the comma
12c0: 6e 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  nd</param>..    
12d0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12e0: 22 74 72 61 6e 73 61 63 74 69 6f 6e 22 3e 54 68  "transaction">Th
12f0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68  e transaction th
1300: 65 20 63 6f 6d 6d 61 6e 64 20 73 68 6f 75 6c 64  e command should
1310: 20 62 65 20 61 73 73 6f 63 69 61 74 65 64 20 77   be associated w
1320: 69 74 68 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ith</param>..   
1330: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 43 6f   public SQLiteCo
1340: 6d 6d 61 6e 64 28 73 74 72 69 6e 67 20 63 6f 6d  mmand(string com
1350: 6d 61 6e 64 54 65 78 74 2c 20 53 51 4c 69 74 65  mandText, SQLite
1360: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
1370: 63 74 69 6f 6e 2c 20 53 51 4c 69 74 65 54 72 61  ction, SQLiteTra
1380: 6e 73 61 63 74 69 6f 6e 20 74 72 61 6e 73 61 63  nsaction transac
1390: 74 69 6f 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  tion)..    {..  
13a0: 20 20 20 20 5f 63 6f 6d 6d 61 6e 64 54 69 6d 65      _commandTime
13b0: 6f 75 74 20 3d 20 33 30 3b 0d 0a 20 20 20 20 20  out = 30;..     
13c0: 20 5f 70 61 72 61 6d 65 74 65 72 43 6f 6c 6c 65   _parameterColle
13d0: 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69  ction = new SQLi
13e0: 74 65 50 61 72 61 6d 65 74 65 72 43 6f 6c 6c 65  teParameterColle
13f0: 63 74 69 6f 6e 28 74 68 69 73 29 3b 0d 0a 20 20  ction(this);..  
1400: 20 20 20 20 5f 64 65 73 69 67 6e 54 69 6d 65 56      _designTimeV
1410: 69 73 69 62 6c 65 20 3d 20 74 72 75 65 3b 0d 0a  isible = true;..
1420: 20 20 20 20 20 20 5f 75 70 64 61 74 65 52 6f 77        _updateRow
1430: 53 6f 75 72 63 65 20 3d 20 55 70 64 61 74 65 52  Source = UpdateR
1440: 6f 77 53 6f 75 72 63 65 2e 4e 6f 6e 65 3b 0d 0a  owSource.None;..
1450: 0d 0a 20 20 20 20 20 20 69 66 20 28 63 6f 6d 6d  ..      if (comm
1460: 61 6e 64 54 65 78 74 20 21 3d 20 6e 75 6c 6c 29  andText != null)
1470: 0d 0a 20 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e  ..        Comman
1480: 64 54 65 78 74 20 3d 20 63 6f 6d 6d 61 6e 64 54  dText = commandT
1490: 65 78 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66  ext;....      if
14a0: 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20   (connection != 
14b0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  null)..      {..
14c0: 20 20 20 20 20 20 20 20 44 62 43 6f 6e 6e 65 63          DbConnec
14d0: 74 69 6f 6e 20 3d 20 63 6f 6e 6e 65 63 74 69 6f  tion = connectio
14e0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 5f 63 6f 6d  n;..        _com
14f0: 6d 61 6e 64 54 69 6d 65 6f 75 74 20 3d 20 63 6f  mandTimeout = co
1500: 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74  nnection.Default
1510: 54 69 6d 65 6f 75 74 3b 0d 0a 20 20 20 20 20 20  Timeout;..      
1520: 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 74  }....      if (t
1530: 72 61 6e 73 61 63 74 69 6f 6e 20 21 3d 20 6e 75  ransaction != nu
1540: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 54 72 61  ll)..        Tra
1550: 6e 73 61 63 74 69 6f 6e 20 3d 20 74 72 61 6e 73  nsaction = trans
1560: 61 63 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20  action;....     
1570: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1580: 6e 2e 4f 6e 43 68 61 6e 67 65 64 28 63 6f 6e 6e  n.OnChanged(conn
1590: 65 63 74 69 6f 6e 2c 20 6e 65 77 20 43 6f 6e 6e  ection, new Conn
15a0: 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 28  ectionEventArgs(
15b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69  ..          SQLi
15c0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  teConnectionEven
15d0: 74 54 79 70 65 2e 4e 65 77 43 6f 6d 6d 61 6e 64  tType.NewCommand
15e0: 2c 20 6e 75 6c 6c 2c 20 74 72 61 6e 73 61 63 74  , null, transact
15f0: 69 6f 6e 2c 20 74 68 69 73 2c 0d 0a 20 20 20 20  ion, this,..    
1600: 20 20 20 20 20 20 6e 75 6c 6c 2c 20 6e 75 6c 6c        null, null
1610: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 29 3b 0d  , null, null));.
1620: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1690: 0a 20 20 20 20 5b 43 6f 6e 64 69 74 69 6f 6e 61  .    [Conditiona
16a0: 6c 28 22 43 48 45 43 4b 5f 53 54 41 54 45 22 29  l("CHECK_STATE")
16b0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
16c0: 73 74 61 74 69 63 20 76 6f 69 64 20 43 68 65 63  static void Chec
16d0: 6b 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20  k(SQLiteCommand 
16e0: 63 6f 6d 6d 61 6e 64 29 0d 0a 20 20 20 20 7b 0d  command)..    {.
16f0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6d  .        if (com
1700: 6d 61 6e 64 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mand == null).. 
1710: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
1720: 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
1730: 6c 45 78 63 65 70 74 69 6f 6e 28 22 63 6f 6d 6d  lException("comm
1740: 61 6e 64 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  and");....      
1750: 20 20 63 6f 6d 6d 61 6e 64 2e 43 68 65 63 6b 44    command.CheckD
1760: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20  isposed();..    
1770: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
1780: 74 69 6f 6e 2e 43 68 65 63 6b 28 63 6f 6d 6d 61  tion.Check(comma
1790: 6e 64 2e 5f 63 6e 6e 29 3b 0d 0a 20 20 20 20 7d  nd._cnn);..    }
17a0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
17b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1800: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1810: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
1820: 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
1830: 62 65 72 73 0d 0a 20 20 20 20 70 72 69 76 61 74  bers..    privat
1840: 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b  e bool disposed;
1850: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
1860: 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
1870: 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
1880: 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57      {..#if THROW
1890: 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20  _ON_DISPOSED..  
18a0: 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
18b0: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
18c0: 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
18d0: 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
18e0: 6f 6e 28 74 79 70 65 6f 66 28 53 51 4c 69 74 65  on(typeof(SQLite
18f0: 43 6f 6d 6d 61 6e 64 29 2e 4e 61 6d 65 29 3b 0d  Command).Name);.
1900: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
1910: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
1980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1990: 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
19a0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20  the command and 
19b0: 63 6c 65 61 72 73 20 61 6c 6c 20 6d 65 6d 62 65  clears all membe
19c0: 72 20 76 61 72 69 61 62 6c 65 73 0d 0a 20 20 20  r variables..   
19d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
19e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
19f0: 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22  name="disposing"
1a00: 3e 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20  >Whether or not 
1a10: 74 68 65 20 63 6c 61 73 73 20 69 73 20 62 65 69  the class is bei
1a20: 6e 67 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72  ng explicitly or
1a30: 20 69 6d 70 6c 69 63 69 74 6c 79 20 64 69 73 70   implicitly disp
1a40: 6f 73 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  osed</param>..  
1a50: 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
1a60: 72 69 64 65 20 76 6f 69 64 20 44 69 73 70 6f 73  ride void Dispos
1a70: 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
1a80: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1a90: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
1aa0: 6f 6e 2e 4f 6e 43 68 61 6e 67 65 64 28 5f 63 6e  on.OnChanged(_cn
1ab0: 6e 2c 20 6e 65 77 20 43 6f 6e 6e 65 63 74 69 6f  n, new Connectio
1ac0: 6e 45 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20  nEventArgs(..   
1ad0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
1ae0: 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79  onnectionEventTy
1af0: 70 65 2e 44 69 73 70 6f 73 69 6e 67 43 6f 6d 6d  pe.DisposingComm
1b00: 61 6e 64 2c 20 6e 75 6c 6c 2c 20 5f 74 72 61 6e  and, null, _tran
1b10: 73 61 63 74 69 6f 6e 2c 20 74 68 69 73 2c 0d 0a  saction, this,..
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c              null
1b30: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 65  , null, null, ne
1b40: 77 20 6f 62 6a 65 63 74 5b 5d 20 7b 20 64 69 73  w object[] { dis
1b50: 70 6f 73 69 6e 67 2c 20 64 69 73 70 6f 73 65 64  posing, disposed
1b60: 20 7d 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   }));....       
1b70: 20 62 6f 6f 6c 20 73 6b 69 70 70 65 64 44 69 73   bool skippedDis
1b80: 70 6f 73 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  pose = false;...
1b90: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
1ba0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1bb0: 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
1bc0: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
1bd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1be0: 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 69 6e      if (disposin
1bf0: 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
1c00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
1c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1c40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c50: 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20       // dispose 
1c60: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
1c70: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
1c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1cc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66             // If
1cd0: 20 61 20 72 65 61 64 65 72 20 69 73 20 61 63 74   a reader is act
1ce0: 69 76 65 20 6f 6e 20 74 68 69 73 20 63 6f 6d 6d  ive on this comm
1cf0: 61 6e 64 2c 20 64 6f 6e 27 74 20 64 65 73 74 72  and, don't destr
1d00: 6f 79 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20  oy the command, 
1d10: 69 6e 73 74 65 61 64 20 6c 65 74 20 74 68 65 20  instead let the 
1d20: 72 65 61 64 65 72 20 64 6f 20 69 74 0d 0a 20 20  reader do it..  
1d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d40: 20 20 53 51 4c 69 74 65 44 61 74 61 52 65 61 64    SQLiteDataRead
1d50: 65 72 20 72 65 61 64 65 72 20 3d 20 6e 75 6c 6c  er reader = null
1d60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d70: 20 20 20 20 20 20 20 69 66 20 28 5f 61 63 74 69         if (_acti
1d80: 76 65 52 65 61 64 65 72 20 21 3d 20 6e 75 6c 6c  veReader != null
1d90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1da0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1e00: 61 64 65 72 20 3d 20 5f 61 63 74 69 76 65 52 65  ader = _activeRe
1e10: 61 64 65 72 2e 54 61 72 67 65 74 20 61 73 20 53  ader.Target as S
1e20: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 3b  QLiteDataReader;
1e30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e60: 20 20 20 20 20 63 61 74 63 68 20 28 49 6e 76 61       catch (Inva
1e70: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1e80: 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20  ption)..        
1e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1eb0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1ee0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
1ef0: 65 61 64 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eader != null)..
1f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f30: 65 61 64 65 72 2e 5f 64 69 73 70 6f 73 65 43 6f  eader._disposeCo
1f40: 6d 6d 61 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 20  mmand = true;.. 
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f60: 20 20 20 20 20 20 20 5f 61 63 74 69 76 65 52 65         _activeRe
1f70: 61 64 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  ader = null;..  
1f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f90: 20 20 20 20 20 20 73 6b 69 70 70 65 64 44 69 73        skippedDis
1fa0: 70 6f 73 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20  pose = true;..  
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20        return;.. 
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ff0: 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e 6e              Conn
2000: 65 63 74 69 6f 6e 20 3d 20 6e 75 6c 6c 3b 0d 0a  ection = null;..
2010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2020: 20 20 20 20 5f 70 61 72 61 6d 65 74 65 72 43 6f      _parameterCo
2030: 6c 6c 65 63 74 69 6f 6e 2e 43 6c 65 61 72 28 29  llection.Clear()
2040: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2050: 20 20 20 20 20 20 20 5f 63 6f 6d 6d 61 6e 64 54         _commandT
2060: 65 78 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ext = null;..   
2070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2090: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
20c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
20d0: 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
20e0: 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
20f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2100: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2130: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2140: 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61   }..        fina
2150: 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lly..        {..
2160: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2170: 21 73 6b 69 70 70 65 64 44 69 73 70 6f 73 65 29  !skippedDispose)
2180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21a0: 20 62 61 73 65 2e 44 69 73 70 6f 73 65 28 64 69   base.Dispose(di
21b0: 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  sposing);....   
21c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
21d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e0: 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74   // NOTE: Everyt
21f0: 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66  hing should be f
2200: 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74  ully disposed at
2210: 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20   this point...  
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2240: 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
2250: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2260: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
2270: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
2280: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
2290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
22f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2300: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
2310: 74 68 6f 64 20 61 74 74 65 6d 70 74 73 20 74 6f  thod attempts to
2320: 20 71 75 65 72 79 20 74 68 65 20 66 6c 61 67 73   query the flags
2330: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2340: 20 74 68 65 20 64 61 74 61 62 61 73 65 0d 0a 20   the database.. 
2350: 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f     /// connectio
2360: 6e 20 69 6e 20 75 73 65 2e 20 20 49 66 20 74 68  n in use.  If th
2370: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2380: 63 74 69 6f 6e 20 69 73 20 64 69 73 70 6f 73 65  ction is dispose
2390: 64 2c 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a  d, the default..
23a0: 20 20 20 20 2f 2f 2f 20 66 6c 61 67 73 20 77 69      /// flags wi
23b0: 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d  ll be returned..
23c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
23d0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
23e0: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d 6d 61 6e  ram name="comman
23f0: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  d">..    /// The
2400: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74 61 69 6e   command contain
2410: 69 6e 67 20 74 68 65 20 64 61 74 61 62 73 65 20  ing the databse 
2420: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 71 75  connection to qu
2430: 65 72 79 20 74 68 65 20 66 6c 61 67 73 20 66 72  ery the flags fr
2440: 6f 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  om...    /// </p
2450: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
2460: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
2470: 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
2480: 20 66 6c 61 67 73 20 76 61 6c 75 65 2e 0d 0a 20   flags value... 
2490: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24a0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
24b0: 73 74 61 74 69 63 20 53 51 4c 69 74 65 43 6f 6e  static SQLiteCon
24c0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 47 65 74  nectionFlags Get
24d0: 46 6c 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20  Flags(..        
24e0: 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6f  SQLiteCommand co
24f0: 6d 6d 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 29  mmand..        )
2500: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2510: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d   try..        {.
2520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2530: 28 63 6f 6d 6d 61 6e 64 20 21 3d 20 6e 75 6c 6c  (command != null
2540: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2560: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
2570: 6f 6e 20 63 6e 6e 20 3d 20 63 6f 6d 6d 61 6e 64  on cnn = command
2580: 2e 5f 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  ._cnn;....      
2590: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6e            if (cn
25a0: 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n != null)..    
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c0: 72 65 74 75 72 6e 20 63 6e 6e 2e 46 6c 61 67 73  return cnn.Flags
25d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
25e0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
25f0: 20 20 20 20 20 63 61 74 63 68 20 28 4f 62 6a 65       catch (Obje
2600: 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
2610: 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ion)..        {.
2620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
2630: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
2640: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2650: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43    return SQLiteC
2660: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 44  onnectionFlags.D
2670: 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 7d 0d 0a  efault;..    }..
2680: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 72 69  /////....    pri
26f0: 76 61 74 65 20 76 6f 69 64 20 44 69 73 70 6f 73  vate void Dispos
2700: 65 53 74 61 74 65 6d 65 6e 74 73 28 29 0d 0a 20  eStatements().. 
2710: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
2720: 20 28 5f 73 74 61 74 65 6d 65 6e 74 4c 69 73 74   (_statementList
2730: 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e   == null) return
2740: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
2750: 20 78 20 3d 20 5f 73 74 61 74 65 6d 65 6e 74 4c   x = _statementL
2760: 69 73 74 2e 43 6f 75 6e 74 3b 0d 0a 0d 0a 20 20  ist.Count;....  
2770: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 6e        for (int n
2780: 20 3d 20 30 3b 20 6e 20 3c 20 78 3b 20 6e 2b 2b   = 0; n < x; n++
2790: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
27a0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
27b0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 20 3d  Statement stmt =
27c0: 20 5f 73 74 61 74 65 6d 65 6e 74 4c 69 73 74 5b   _statementList[
27d0: 6e 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n];..           
27e0: 20 69 66 20 28 73 74 6d 74 20 3d 3d 20 6e 75 6c   if (stmt == nul
27f0: 6c 29 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20  l) continue;..  
2800: 20 20 20 20 20 20 20 20 20 20 73 74 6d 74 2e 44            stmt.D
2810: 69 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  ispose();..     
2820: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2830: 5f 73 74 61 74 65 6d 65 6e 74 4c 69 73 74 20 3d  _statementList =
2840: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d   null;..    }...
2850: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
28c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
28d0: 2f 2f 20 43 6c 65 61 72 73 20 61 6e 64 20 64 65  // Clears and de
28e0: 73 74 72 6f 79 73 20 61 6c 6c 20 73 74 61 74 65  stroys all state
28f0: 6d 65 6e 74 73 20 63 75 72 72 65 6e 74 6c 79 20  ments currently 
2900: 70 72 65 70 61 72 65 64 0d 0a 20 20 20 20 2f 2f  prepared..    //
2910: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2920: 20 20 69 6e 74 65 72 6e 61 6c 20 76 6f 69 64 20    internal void 
2930: 43 6c 65 61 72 43 6f 6d 6d 61 6e 64 73 28 29 0d  ClearCommands().
2940: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
2950: 20 28 5f 61 63 74 69 76 65 52 65 61 64 65 72 20   (_activeReader 
2960: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2970: 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  {..        SQLit
2980: 65 44 61 74 61 52 65 61 64 65 72 20 72 65 61 64  eDataReader read
2990: 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  er = null;..    
29a0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
29b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65   {..          re
29c0: 61 64 65 72 20 3d 20 5f 61 63 74 69 76 65 52 65  ader = _activeRe
29d0: 61 64 65 72 2e 54 61 72 67 65 74 20 61 73 20 53  ader.Target as S
29e0: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 3b  QLiteDataReader;
29f0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2a00: 20 20 20 20 20 63 61 74 63 68 28 49 6e 76 61 6c       catch(Inval
2a10: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
2a20: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 7b  tion)..        {
2a30: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2a40: 20 20 20 20 20 20 20 69 66 20 28 72 65 61 64 65         if (reade
2a50: 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r != null)..    
2a60: 20 20 20 20 20 20 72 65 61 64 65 72 2e 43 6c 6f        reader.Clo
2a70: 73 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  se();....       
2a80: 20 5f 61 63 74 69 76 65 52 65 61 64 65 72 20 3d   _activeReader =
2a90: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
2aa0: 0a 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  ...      Dispose
2ab0: 53 74 61 74 65 6d 65 6e 74 73 28 29 3b 0d 0a 0d  Statements();...
2ac0: 0a 20 20 20 20 20 20 5f 70 61 72 61 6d 65 74 65  .      _paramete
2ad0: 72 43 6f 6c 6c 65 63 74 69 6f 6e 2e 55 6e 62 69  rCollection.Unbi
2ae0: 6e 64 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  nd();..    }....
2af0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2b00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c 64  >..    /// Build
2b10: 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 72  s an array of pr
2b20: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
2b30: 73 20 66 6f 72 20 65 61 63 68 20 63 6f 6d 70 6c  s for each compl
2b40: 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ete SQL statemen
2b50: 74 20 69 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64  t in the command
2b60: 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c   text..    /// <
2b70: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
2b80: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74  nternal SQLiteSt
2b90: 61 74 65 6d 65 6e 74 20 42 75 69 6c 64 4e 65 78  atement BuildNex
2ba0: 74 43 6f 6d 6d 61 6e 64 28 29 0d 0a 20 20 20 20  tCommand()..    
2bb0: 7b 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65 53  {..      SQLiteS
2bc0: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 20 3d 20  tatement stmt = 
2bd0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 74  null;....      t
2be0: 72 79 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ry..      {..   
2bf0: 20 20 20 20 20 69 66 20 28 28 5f 63 6e 6e 20 21       if ((_cnn !
2c00: 3d 20 6e 75 6c 6c 29 20 26 26 20 28 5f 63 6e 6e  = null) && (_cnn
2c10: 2e 5f 73 71 6c 20 21 3d 20 6e 75 6c 6c 29 29 0d  ._sql != null)).
2c20: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2c30: 20 20 20 20 20 20 69 66 20 28 5f 73 74 61 74 65        if (_state
2c40: 6d 65 6e 74 4c 69 73 74 20 3d 3d 20 6e 75 6c 6c  mentList == null
2c50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f  )..            _
2c60: 72 65 6d 61 69 6e 69 6e 67 54 65 78 74 20 3d 20  remainingText = 
2c70: 5f 63 6f 6d 6d 61 6e 64 54 65 78 74 3b 0d 0a 0d  _commandText;...
2c80: 0a 20 20 20 20 20 20 20 20 20 20 73 74 6d 74 20  .          stmt 
2c90: 3d 20 5f 63 6e 6e 2e 5f 73 71 6c 2e 50 72 65 70  = _cnn._sql.Prep
2ca0: 61 72 65 28 5f 63 6e 6e 2c 20 5f 72 65 6d 61 69  are(_cnn, _remai
2cb0: 6e 69 6e 67 54 65 78 74 2c 20 28 5f 73 74 61 74  ningText, (_stat
2cc0: 65 6d 65 6e 74 4c 69 73 74 20 3d 3d 20 6e 75 6c  ementList == nul
2cd0: 6c 29 20 3f 20 6e 75 6c 6c 20 3a 20 5f 73 74 61  l) ? null : _sta
2ce0: 74 65 6d 65 6e 74 4c 69 73 74 5b 5f 73 74 61 74  tementList[_stat
2cf0: 65 6d 65 6e 74 4c 69 73 74 2e 43 6f 75 6e 74 20  ementList.Count 
2d00: 2d 20 31 5d 2c 20 28 75 69 6e 74 29 28 5f 63 6f  - 1], (uint)(_co
2d10: 6d 6d 61 6e 64 54 69 6d 65 6f 75 74 20 2a 20 31  mmandTimeout * 1
2d20: 30 30 30 29 2c 20 72 65 66 20 5f 72 65 6d 61 69  000), ref _remai
2d30: 6e 69 6e 67 54 65 78 74 29 3b 0d 0a 0d 0a 20 20  ningText);....  
2d40: 20 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74          if (stmt
2d50: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2d60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d70: 20 20 20 20 73 74 6d 74 2e 5f 63 6f 6d 6d 61 6e      stmt._comman
2d80: 64 20 3d 20 74 68 69 73 3b 0d 0a 0d 0a 20 20 20  d = this;....   
2d90: 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 73 74           if (_st
2da0: 61 74 65 6d 65 6e 74 4c 69 73 74 20 3d 3d 20 6e  atementList == n
2db0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2dc0: 20 20 20 20 5f 73 74 61 74 65 6d 65 6e 74 4c 69      _statementLi
2dd0: 73 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 53 51  st = new List<SQ
2de0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 3e 28 29  LiteStatement>()
2df0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e00: 20 5f 73 74 61 74 65 6d 65 6e 74 4c 69 73 74 2e   _statementList.
2e10: 41 64 64 28 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20  Add(stmt);....  
2e20: 20 20 20 20 20 20 20 20 20 20 5f 70 61 72 61 6d            _param
2e30: 65 74 65 72 43 6f 6c 6c 65 63 74 69 6f 6e 2e 4d  eterCollection.M
2e40: 61 70 50 61 72 61 6d 65 74 65 72 73 28 73 74 6d  apParameters(stm
2e50: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
2e60: 20 73 74 6d 74 2e 42 69 6e 64 50 61 72 61 6d 65   stmt.BindParame
2e70: 74 65 72 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  ters();..       
2e80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2e90: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
2ea0: 73 74 6d 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  stmt;..      }..
2eb0: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
2ec0: 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 7b  eption)..      {
2ed0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 74  ..        if (st
2ee0: 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  mt != null)..   
2ef0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f00: 20 20 69 66 20 28 28 5f 73 74 61 74 65 6d 65 6e    if ((_statemen
2f10: 74 4c 69 73 74 20 21 3d 20 6e 75 6c 6c 29 20 26  tList != null) &
2f20: 26 20 5f 73 74 61 74 65 6d 65 6e 74 4c 69 73 74  & _statementList
2f30: 2e 43 6f 6e 74 61 69 6e 73 28 73 74 6d 74 29 29  .Contains(stmt))
2f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 73  ..            _s
2f50: 74 61 74 65 6d 65 6e 74 4c 69 73 74 2e 52 65 6d  tatementList.Rem
2f60: 6f 76 65 28 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20  ove(stmt);....  
2f70: 20 20 20 20 20 20 20 20 73 74 6d 74 2e 44 69 73          stmt.Dis
2f80: 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  pose();..       
2f90: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2fa0: 20 49 66 20 77 65 20 74 68 72 65 77 20 61 6e 20   If we threw an 
2fb0: 65 72 72 6f 72 20 63 6f 6d 70 69 6c 69 6e 67 20  error compiling 
2fc0: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2c 20 77  the statement, w
2fd0: 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75  e cannot continu
2fe0: 65 20 6f 6e 20 73 6f 20 73 65 74 20 74 68 65 20  e on so set the 
2ff0: 72 65 6d 61 69 6e 69 6e 67 20 74 65 78 74 20 74  remaining text t
3000: 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  o null...       
3010: 20 5f 72 65 6d 61 69 6e 69 6e 67 54 65 78 74 20   _remainingText 
3020: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
3030: 20 20 20 74 68 72 6f 77 3b 0d 0a 20 20 20 20 20     throw;..     
3040: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
3050: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
3060: 53 74 61 74 65 6d 65 6e 74 20 47 65 74 53 74 61  Statement GetSta
3070: 74 65 6d 65 6e 74 28 69 6e 74 20 69 6e 64 65 78  tement(int index
3080: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
3090: 2f 2f 20 48 61 76 65 6e 27 74 20 62 75 69 6c 74  // Haven't built
30a0: 20 61 6e 79 20 73 74 61 74 65 6d 65 6e 74 73 20   any statements 
30b0: 79 65 74 0d 0a 20 20 20 20 20 20 69 66 20 28 5f  yet..      if (_
30c0: 73 74 61 74 65 6d 65 6e 74 4c 69 73 74 20 3d 3d  statementList ==
30d0: 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 42 75   null) return Bu
30e0: 69 6c 64 4e 65 78 74 43 6f 6d 6d 61 6e 64 28 29  ildNextCommand()
30f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 20 49 66  ;....      // If
3100: 20 77 65 27 72 65 20 61 74 20 74 68 65 20 6c 61   we're at the la
3110: 73 74 20 62 75 69 6c 74 20 73 74 61 74 65 6d 65  st built stateme
3120: 6e 74 20 61 6e 64 20 77 61 6e 74 20 74 68 65 20  nt and want the 
3130: 6e 65 78 74 20 75 6e 62 75 69 6c 74 20 73 74 61  next unbuilt sta
3140: 74 65 6d 65 6e 74 2c 20 74 68 65 6e 20 62 75 69  tement, then bui
3150: 6c 64 20 69 74 0d 0a 20 20 20 20 20 20 69 66 20  ld it..      if 
3160: 28 69 6e 64 65 78 20 3d 3d 20 5f 73 74 61 74 65  (index == _state
3170: 6d 65 6e 74 4c 69 73 74 2e 43 6f 75 6e 74 29 0d  mentList.Count).
3180: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
3190: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
31a0: 75 6c 6c 4f 72 45 6d 70 74 79 28 5f 72 65 6d 61  ullOrEmpty(_rema
31b0: 69 6e 69 6e 67 54 65 78 74 29 20 3d 3d 20 66 61  iningText) == fa
31c0: 6c 73 65 29 20 72 65 74 75 72 6e 20 42 75 69 6c  lse) return Buil
31d0: 64 4e 65 78 74 43 6f 6d 6d 61 6e 64 28 29 3b 0d  dNextCommand();.
31e0: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 72 65  .        else re
31f0: 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2f 20 4e 6f  turn null; // No
3200: 20 6d 6f 72 65 20 63 6f 6d 6d 61 6e 64 73 0d 0a   more commands..
3210: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3220: 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
3230: 20 73 74 6d 74 20 3d 20 5f 73 74 61 74 65 6d 65   stmt = _stateme
3240: 6e 74 4c 69 73 74 5b 69 6e 64 65 78 5d 3b 0d 0a  ntList[index];..
3250: 20 20 20 20 20 20 73 74 6d 74 2e 42 69 6e 64 50        stmt.BindP
3260: 61 72 61 6d 65 74 65 72 73 28 29 3b 0d 0a 0d 0a  arameters();....
3270: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d        return stm
3280: 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t;..    }....   
3290: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32a0: 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 69 6d 70 6c      /// Not impl
32b0: 65 6d 65 6e 74 65 64 0d 0a 20 20 20 20 2f 2f 2f  emented..    ///
32c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
32d0: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
32e0: 20 76 6f 69 64 20 43 61 6e 63 65 6c 28 29 0d 0a   void Cancel()..
32f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65      {..      Che
3300: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
3310: 0a 20 20 20 20 20 20 69 66 20 28 5f 61 63 74 69  .      if (_acti
3320: 76 65 52 65 61 64 65 72 20 21 3d 20 6e 75 6c 6c  veReader != null
3330: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
3340: 20 20 20 20 53 51 4c 69 74 65 44 61 74 61 52 65      SQLiteDataRe
3350: 61 64 65 72 20 72 65 61 64 65 72 20 3d 20 5f 61  ader reader = _a
3360: 63 74 69 76 65 52 65 61 64 65 72 2e 54 61 72 67  ctiveReader.Targ
3370: 65 74 20 61 73 20 53 51 4c 69 74 65 44 61 74 61  et as SQLiteData
3380: 52 65 61 64 65 72 3b 0d 0a 20 20 20 20 20 20 20  Reader;..       
3390: 20 69 66 20 28 72 65 61 64 65 72 20 21 3d 20 6e   if (reader != n
33a0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
33b0: 72 65 61 64 65 72 2e 43 61 6e 63 65 6c 28 29 3b  reader.Cancel();
33c0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
33d0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
33e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
33f0: 68 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 20 74  he SQL command t
3400: 65 78 74 20 61 73 73 6f 63 69 61 74 65 64 20 77  ext associated w
3410: 69 74 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0d  ith the command.
3420: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
3430: 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
3440: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3450: 4f 52 4b 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c  ORK..    [Defaul
3460: 74 56 61 6c 75 65 28 22 22 29 2c 20 52 65 66 72  tValue(""), Refr
3470: 65 73 68 50 72 6f 70 65 72 74 69 65 73 28 52 65  eshProperties(Re
3480: 66 72 65 73 68 50 72 6f 70 65 72 74 69 65 73 2e  freshProperties.
3490: 41 6c 6c 29 2c 20 45 64 69 74 6f 72 28 22 4d 69  All), Editor("Mi
34a0: 63 72 6f 73 6f 66 74 2e 56 53 44 65 73 69 67 6e  crosoft.VSDesign
34b0: 65 72 2e 44 61 74 61 2e 53 51 4c 2e 44 65 73 69  er.Data.SQL.Desi
34c0: 67 6e 2e 53 71 6c 43 6f 6d 6d 61 6e 64 54 65 78  gn.SqlCommandTex
34d0: 74 45 64 69 74 6f 72 2c 20 4d 69 63 72 6f 73 6f  tEditor, Microso
34e0: 66 74 2e 56 53 44 65 73 69 67 6e 65 72 2c 20 56  ft.VSDesigner, V
34f0: 65 72 73 69 6f 6e 3d 38 2e 30 2e 30 2e 30 2c 20  ersion=8.0.0.0, 
3500: 43 75 6c 74 75 72 65 3d 6e 65 75 74 72 61 6c 2c  Culture=neutral,
3510: 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b 65 6e 3d   PublicKeyToken=
3520: 62 30 33 66 35 66 37 66 31 31 64 35 30 61 33 61  b03f5f7f11d50a3a
3530: 22 2c 20 22 53 79 73 74 65 6d 2e 44 72 61 77 69  ", "System.Drawi
3540: 6e 67 2e 44 65 73 69 67 6e 2e 55 49 54 79 70 65  ng.Design.UIType
3550: 45 64 69 74 6f 72 2c 20 53 79 73 74 65 6d 2e 44  Editor, System.D
3560: 72 61 77 69 6e 67 2c 20 56 65 72 73 69 6f 6e 3d  rawing, Version=
3570: 32 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65  2.0.0.0, Culture
3580: 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63  =neutral, Public
3590: 4b 65 79 54 6f 6b 65 6e 3d 62 30 33 66 35 66 37  KeyToken=b03f5f7
35a0: 66 31 31 64 35 30 61 33 61 22 29 5d 0d 0a 23 65  f11d50a3a")]..#e
35b0: 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
35c0: 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
35d0: 20 43 6f 6d 6d 61 6e 64 54 65 78 74 0d 0a 20 20   CommandText..  
35e0: 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a    {..      get..
35f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3600: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
3610: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ;....        ret
3620: 75 72 6e 20 5f 63 6f 6d 6d 61 6e 64 54 65 78 74  urn _commandText
3630: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
3640: 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a    set..      {..
3650: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
3660: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
3670: 20 20 20 20 69 66 20 28 5f 63 6f 6d 6d 61 6e 64      if (_command
3680: 54 65 78 74 20 3d 3d 20 76 61 6c 75 65 29 20 72  Text == value) r
3690: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
36a0: 20 20 69 66 20 28 5f 61 63 74 69 76 65 52 65 61    if (_activeRea
36b0: 64 65 72 20 21 3d 20 6e 75 6c 6c 20 26 26 20 5f  der != null && _
36c0: 61 63 74 69 76 65 52 65 61 64 65 72 2e 49 73 41  activeReader.IsA
36d0: 6c 69 76 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  live)..        {
36e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 72 6f  ..          thro
36f0: 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
3700: 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
3710: 22 43 61 6e 6e 6f 74 20 73 65 74 20 43 6f 6d 6d  "Cannot set Comm
3720: 61 6e 64 54 65 78 74 20 77 68 69 6c 65 20 61 20  andText while a 
3730: 44 61 74 61 52 65 61 64 65 72 20 69 73 20 61 63  DataReader is ac
3740: 74 69 76 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  tive");..       
3750: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 43 6c   }....        Cl
3760: 65 61 72 43 6f 6d 6d 61 6e 64 73 28 29 3b 0d 0a  earCommands();..
3770: 20 20 20 20 20 20 20 20 5f 63 6f 6d 6d 61 6e 64          _command
3780: 54 65 78 74 20 3d 20 76 61 6c 75 65 3b 0d 0a 0d  Text = value;...
3790: 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 63 6e  .        if (_cn
37a0: 6e 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72  n == null) retur
37b0: 6e 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  n;..      }..   
37c0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
37d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
37e0: 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 74   The amount of t
37f0: 69 6d 65 20 74 6f 20 77 61 69 74 20 66 6f 72 20  ime to wait for 
3800: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  the connection t
3810: 6f 20 62 65 63 6f 6d 65 20 61 76 61 69 6c 61 62  o become availab
3820: 6c 65 20 62 65 66 6f 72 65 20 65 72 72 6f 72 69  le before errori
3830: 6e 67 20 6f 75 74 0d 0a 20 20 20 20 2f 2f 2f 20  ng out..    /// 
3840: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20  </summary>..#if 
3850: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
3860: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
3870: 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 28 69  [DefaultValue((i
3880: 6e 74 29 33 30 29 5d 0d 0a 23 65 6e 64 69 66 0d  nt)30)]..#endif.
3890: 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72  .    public over
38a0: 72 69 64 65 20 69 6e 74 20 43 6f 6d 6d 61 6e 64  ride int Command
38b0: 54 69 6d 65 6f 75 74 0d 0a 20 20 20 20 7b 0d 0a  Timeout..    {..
38c0: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
38d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63   {..        Chec
38e0: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
38f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 63 6f        return _co
3900: 6d 6d 61 6e 64 54 69 6d 65 6f 75 74 3b 0d 0a 20  mmandTimeout;.. 
3910: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65       }..      se
3920: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
3930: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
3940: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 5f 63  d();..        _c
3950: 6f 6d 6d 61 6e 64 54 69 6d 65 6f 75 74 20 3d 20  ommandTimeout = 
3960: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
3970: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
3980: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3990: 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 6f 66   /// The type of
39a0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 53   the command.  S
39b0: 51 4c 69 74 65 20 6f 6e 6c 79 20 73 75 70 70 6f  QLite only suppo
39c0: 72 74 73 20 43 6f 6d 6d 61 6e 64 54 79 70 65 2e  rts CommandType.
39d0: 54 65 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  Text..    /// </
39e0: 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50  summary>..#if !P
39f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
3a00: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 52  RAMEWORK..    [R
3a10: 65 66 72 65 73 68 50 72 6f 70 65 72 74 69 65 73  efreshProperties
3a20: 28 52 65 66 72 65 73 68 50 72 6f 70 65 72 74 69  (RefreshProperti
3a30: 65 73 2e 41 6c 6c 29 2c 20 44 65 66 61 75 6c 74  es.All), Default
3a40: 56 61 6c 75 65 28 43 6f 6d 6d 61 6e 64 54 79 70  Value(CommandTyp
3a50: 65 2e 54 65 78 74 29 5d 0d 0a 23 65 6e 64 69 66  e.Text)]..#endif
3a60: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65  ..    public ove
3a70: 72 72 69 64 65 20 43 6f 6d 6d 61 6e 64 54 79 70  rride CommandTyp
3a80: 65 20 43 6f 6d 6d 61 6e 64 54 79 70 65 0d 0a 20  e CommandType.. 
3a90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d     {..      get.
3aa0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
3ab0: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
3ac0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  );..        retu
3ad0: 72 6e 20 43 6f 6d 6d 61 6e 64 54 79 70 65 2e 54  rn CommandType.T
3ae0: 65 78 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ext;..      }.. 
3af0: 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20       set..      
3b00: 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b  {..        Check
3b10: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
3b20: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
3b30: 20 21 3d 20 43 6f 6d 6d 61 6e 64 54 79 70 65 2e   != CommandType.
3b40: 54 65 78 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  Text)..        {
3b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 72 6f  ..          thro
3b60: 77 20 6e 65 77 20 4e 6f 74 53 75 70 70 6f 72 74  w new NotSupport
3b70: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
3b80: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3b90: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
3ba0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3bb0: 20 20 20 20 2f 2f 2f 20 46 6f 72 77 61 72 64 73      /// Forwards
3bc0: 20 74 6f 20 74 68 65 20 6c 6f 63 61 6c 20 43 72   to the local Cr
3bd0: 65 61 74 65 50 61 72 61 6d 65 74 65 72 28 29 20  eateParameter() 
3be0: 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  function..    //
3bf0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3c00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c    /// <returns><
3c10: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
3c20: 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
3c30: 65 20 44 62 50 61 72 61 6d 65 74 65 72 20 43 72  e DbParameter Cr
3c40: 65 61 74 65 44 62 50 61 72 61 6d 65 74 65 72 28  eateDbParameter(
3c50: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
3c60: 72 65 74 75 72 6e 20 43 72 65 61 74 65 50 61 72  return CreatePar
3c70: 61 6d 65 74 65 72 28 29 3b 0d 0a 20 20 20 20 7d  ameter();..    }
3c80: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
3c90: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
3ca0: 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 72 61  reate a new para
3cb0: 6d 65 74 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c  meter..    /// <
3cc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
3cd0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
3ce0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
3cf0: 69 63 20 6e 65 77 20 53 51 4c 69 74 65 50 61 72  ic new SQLitePar
3d00: 61 6d 65 74 65 72 20 43 72 65 61 74 65 50 61 72  ameter CreatePar
3d10: 61 6d 65 74 65 72 28 29 0d 0a 20 20 20 20 7b 0d  ameter()..    {.
3d20: 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70  .      CheckDisp
3d30: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 72  osed();..      r
3d40: 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
3d50: 50 61 72 61 6d 65 74 65 72 28 29 3b 0d 0a 20 20  Parameter();..  
3d60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
3d70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
3d80: 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
3d90: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3da0: 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 0d 0a 20   this command.. 
3db0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3dc0: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
3dd0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
3de0: 4b 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56  K..    [DefaultV
3df0: 61 6c 75 65 28 28 73 74 72 69 6e 67 29 6e 75 6c  alue((string)nul
3e00: 6c 29 2c 20 45 64 69 74 6f 72 28 22 4d 69 63 72  l), Editor("Micr
3e10: 6f 73 6f 66 74 2e 56 53 44 65 73 69 67 6e 65 72  osoft.VSDesigner
3e20: 2e 44 61 74 61 2e 44 65 73 69 67 6e 2e 44 62 43  .Data.Design.DbC
3e30: 6f 6e 6e 65 63 74 69 6f 6e 45 64 69 74 6f 72 2c  onnectionEditor,
3e40: 20 4d 69 63 72 6f 73 6f 66 74 2e 56 53 44 65 73   Microsoft.VSDes
3e50: 69 67 6e 65 72 2c 20 56 65 72 73 69 6f 6e 3d 38  igner, Version=8
3e60: 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d  .0.0.0, Culture=
3e70: 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b  neutral, PublicK
3e80: 65 79 54 6f 6b 65 6e 3d 62 30 33 66 35 66 37 66  eyToken=b03f5f7f
3e90: 31 31 64 35 30 61 33 61 22 2c 20 22 53 79 73 74  11d50a3a", "Syst
3ea0: 65 6d 2e 44 72 61 77 69 6e 67 2e 44 65 73 69 67  em.Drawing.Desig
3eb0: 6e 2e 55 49 54 79 70 65 45 64 69 74 6f 72 2c 20  n.UITypeEditor, 
3ec0: 53 79 73 74 65 6d 2e 44 72 61 77 69 6e 67 2c 20  System.Drawing, 
3ed0: 56 65 72 73 69 6f 6e 3d 32 2e 30 2e 30 2e 30 2c  Version=2.0.0.0,
3ee0: 20 43 75 6c 74 75 72 65 3d 6e 65 75 74 72 61 6c   Culture=neutral
3ef0: 2c 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b 65 6e  , PublicKeyToken
3f00: 3d 62 30 33 66 35 66 37 66 31 31 64 35 30 61 33  =b03f5f7f11d50a3
3f10: 61 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  a")]..#endif..  
3f20: 20 20 70 75 62 6c 69 63 20 6e 65 77 20 53 51 4c    public new SQL
3f30: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 43 6f  iteConnection Co
3f40: 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 7b 0d  nnection..    {.
3f50: 0a 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65  .      get { Che
3f60: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
3f70: 74 75 72 6e 20 5f 63 6e 6e 3b 20 7d 0d 0a 20 20  turn _cnn; }..  
3f80: 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b      set..      {
3f90: 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44  ..        CheckD
3fa0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
3fb0: 20 20 20 20 20 20 69 66 20 28 5f 61 63 74 69 76        if (_activ
3fc0: 65 52 65 61 64 65 72 20 21 3d 20 6e 75 6c 6c 20  eReader != null 
3fd0: 26 26 20 5f 61 63 74 69 76 65 52 65 61 64 65 72  && _activeReader
3fe0: 2e 49 73 41 6c 69 76 65 29 0d 0a 20 20 20 20 20  .IsAlive)..     
3ff0: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
4000: 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
4010: 78 63 65 70 74 69 6f 6e 28 22 43 61 6e 6e 6f 74  xception("Cannot
4020: 20 73 65 74 20 43 6f 6e 6e 65 63 74 69 6f 6e 20   set Connection 
4030: 77 68 69 6c 65 20 61 20 44 61 74 61 52 65 61 64  while a DataRead
4040: 65 72 20 69 73 20 61 63 74 69 76 65 22 29 3b 0d  er is active");.
4050: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f  ...        if (_
4060: 63 6e 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  cnn != null)..  
4070: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4080: 20 20 20 43 6c 65 61 72 43 6f 6d 6d 61 6e 64 73     ClearCommands
4090: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ();..          /
40a0: 2f 5f 63 6e 6e 2e 52 65 6d 6f 76 65 43 6f 6d 6d  /_cnn.RemoveComm
40b0: 61 6e 64 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  and(this);..    
40c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
40d0: 20 5f 63 6e 6e 20 3d 20 76 61 6c 75 65 3b 0d 0a   _cnn = value;..
40e0: 20 20 20 20 20 20 20 20 69 66 20 28 5f 63 6e 6e          if (_cnn
40f0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
4100: 20 20 20 20 20 5f 76 65 72 73 69 6f 6e 20 3d 20       _version = 
4110: 5f 63 6e 6e 2e 5f 76 65 72 73 69 6f 6e 3b 0d 0a  _cnn._version;..
4120: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28  ..        //if (
4130: 5f 63 6e 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  _cnn != null).. 
4140: 20 20 20 20 20 20 20 2f 2f 20 20 5f 63 6e 6e 2e         //  _cnn.
4150: 41 64 64 43 6f 6d 6d 61 6e 64 28 74 68 69 73 29  AddCommand(this)
4160: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
4170: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
4180: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
4190: 46 6f 72 77 61 72 64 73 20 74 6f 20 74 68 65 20  Forwards to the 
41a0: 6c 6f 63 61 6c 20 43 6f 6e 6e 65 63 74 69 6f 6e  local Connection
41b0: 20 70 72 6f 70 65 72 74 79 0d 0a 20 20 20 20 2f   property..    /
41c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
41d0: 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
41e0: 72 72 69 64 65 20 44 62 43 6f 6e 6e 65 63 74 69  rride DbConnecti
41f0: 6f 6e 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d  on DbConnection.
4200: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
4210: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
4220: 20 20 20 20 72 65 74 75 72 6e 20 43 6f 6e 6e 65      return Conne
4230: 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 7d 0d  ction;..      }.
4240: 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20  .      set..    
4250: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 6f 6e    {..        Con
4260: 6e 65 63 74 69 6f 6e 20 3d 20 28 53 51 4c 69 74  nection = (SQLit
4270: 65 43 6f 6e 6e 65 63 74 69 6f 6e 29 76 61 6c 75  eConnection)valu
4280: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  e;..      }..   
4290: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
42a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
42b0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 53 51 4c   Returns the SQL
42c0: 69 74 65 50 61 72 61 6d 65 74 65 72 43 6f 6c 6c  iteParameterColl
42d0: 65 63 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 67  ection for the g
42e0: 69 76 65 6e 20 63 6f 6d 6d 61 6e 64 0d 0a 20 20  iven command..  
42f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4300: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
4310: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
4320: 0d 0a 20 20 20 20 5b 44 65 73 69 67 6e 65 72 53  ..    [DesignerS
4330: 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69  erializationVisi
4340: 62 69 6c 69 74 79 28 44 65 73 69 67 6e 65 72 53  bility(DesignerS
4350: 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69  erializationVisi
4360: 62 69 6c 69 74 79 2e 43 6f 6e 74 65 6e 74 29 5d  bility.Content)]
4370: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
4380: 62 6c 69 63 20 6e 65 77 20 53 51 4c 69 74 65 50  blic new SQLiteP
4390: 61 72 61 6d 65 74 65 72 43 6f 6c 6c 65 63 74 69  arameterCollecti
43a0: 6f 6e 20 50 61 72 61 6d 65 74 65 72 73 0d 0a 20  on Parameters.. 
43b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
43c0: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
43d0: 29 3b 20 72 65 74 75 72 6e 20 5f 70 61 72 61 6d  ); return _param
43e0: 65 74 65 72 43 6f 6c 6c 65 63 74 69 6f 6e 3b 20  eterCollection; 
43f0: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
4400: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4410: 20 20 20 2f 2f 2f 20 46 6f 72 77 61 72 64 73 20     /// Forwards 
4420: 74 6f 20 74 68 65 20 6c 6f 63 61 6c 20 50 61 72  to the local Par
4430: 61 6d 65 74 65 72 73 20 70 72 6f 70 65 72 74 79  ameters property
4440: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
4450: 61 72 79 3e 0d 0a 20 20 20 20 70 72 6f 74 65 63  ary>..    protec
4460: 74 65 64 20 6f 76 65 72 72 69 64 65 20 44 62 50  ted override DbP
4470: 61 72 61 6d 65 74 65 72 43 6f 6c 6c 65 63 74 69  arameterCollecti
4480: 6f 6e 20 44 62 50 61 72 61 6d 65 74 65 72 43 6f  on DbParameterCo
4490: 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 7b 0d  llection..    {.
44a0: 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20  .      get..    
44b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
44c0: 75 72 6e 20 50 61 72 61 6d 65 74 65 72 73 3b 0d  urn Parameters;.
44d0: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d  .      }..    }.
44e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
44f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
4500: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 73  e transaction as
4510: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4520: 69 73 20 63 6f 6d 6d 61 6e 64 2e 20 20 53 51 4c  is command.  SQL
4530: 69 74 65 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  ite only support
4540: 73 20 6f 6e 65 20 74 72 61 6e 73 61 63 74 69 6f  s one transactio
4550: 6e 20 70 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e  n per connection
4560: 2c 20 73 6f 20 74 68 69 73 20 70 72 6f 70 65 72  , so this proper
4570: 74 79 20 66 6f 72 77 61 72 64 73 20 74 6f 20 74  ty forwards to t
4580: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6d 6d  he..    /// comm
4590: 61 6e 64 27 73 20 75 6e 64 65 72 6c 79 69 6e 67  and's underlying
45a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
45b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
45c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
45d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
45e0: 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65  ..    [Browsable
45f0: 28 66 61 6c 73 65 29 2c 20 44 65 73 69 67 6e 65  (false), Designe
4600: 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69  rSerializationVi
4610: 73 69 62 69 6c 69 74 79 28 44 65 73 69 67 6e 65  sibility(Designe
4620: 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69  rSerializationVi
4630: 73 69 62 69 6c 69 74 79 2e 48 69 64 64 65 6e 29  sibility.Hidden)
4640: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
4650: 75 62 6c 69 63 20 6e 65 77 20 53 51 4c 69 74 65  ublic new SQLite
4660: 54 72 61 6e 73 61 63 74 69 6f 6e 20 54 72 61 6e  Transaction Tran
4670: 73 61 63 74 69 6f 6e 0d 0a 20 20 20 20 7b 0d 0a  saction..    {..
4680: 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
4690: 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
46a0: 75 72 6e 20 5f 74 72 61 6e 73 61 63 74 69 6f 6e  urn _transaction
46b0: 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a  ; }..      set..
46c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
46d0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
46e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
46f0: 28 5f 63 6e 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a  (_cnn != null)..
4700: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4710: 20 20 20 20 20 69 66 20 28 5f 61 63 74 69 76 65       if (_active
4720: 52 65 61 64 65 72 20 21 3d 20 6e 75 6c 6c 20 26  Reader != null &
4730: 26 20 5f 61 63 74 69 76 65 52 65 61 64 65 72 2e  & _activeReader.
4740: 49 73 41 6c 69 76 65 29 0d 0a 20 20 20 20 20 20  IsAlive)..      
4750: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
4760: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
4770: 45 78 63 65 70 74 69 6f 6e 28 22 43 61 6e 6e 6f  Exception("Canno
4780: 74 20 73 65 74 20 54 72 61 6e 73 61 63 74 69 6f  t set Transactio
4790: 6e 20 77 68 69 6c 65 20 61 20 44 61 74 61 52 65  n while a DataRe
47a0: 61 64 65 72 20 69 73 20 61 63 74 69 76 65 22 29  ader is active")
47b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
47c0: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
47d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
47e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
47f0: 76 61 6c 75 65 2e 5f 63 6e 6e 20 21 3d 20 5f 63  value._cnn != _c
4800: 6e 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn)..           
4810: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
4820: 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22  umentException("
4830: 54 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 6e  Transaction is n
4840: 6f 74 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ot associated wi
4850: 74 68 20 74 68 65 20 63 6f 6d 6d 61 6e 64 27 73  th the command's
4860: 20 63 6f 6e 6e 65 63 74 69 6f 6e 22 29 3b 0d 0a   connection");..
4870: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4880: 20 20 20 20 20 20 20 5f 74 72 61 6e 73 61 63 74         _transact
4890: 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20  ion = value;..  
48a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
48b0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
48c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
48d0: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 20 43  value != null) C
48e0: 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 76 61 6c 75  onnection = valu
48f0: 65 2e 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 20  e.Connection;.. 
4900: 20 20 20 20 20 20 20 20 20 5f 74 72 61 6e 73 61           _transa
4910: 63 74 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 0d 0a  ction = value;..
4920: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
4930: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
4940: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4950: 20 20 20 20 2f 2f 2f 20 46 6f 72 77 61 72 64 73      /// Forwards
4960: 20 74 6f 20 74 68 65 20 6c 6f 63 61 6c 20 54 72   to the local Tr
4970: 61 6e 73 61 63 74 69 6f 6e 20 70 72 6f 70 65 72  ansaction proper
4980: 74 79 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ty..    /// </su
4990: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 6f 74  mmary>..    prot
49a0: 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 44  ected override D
49b0: 62 54 72 61 6e 73 61 63 74 69 6f 6e 20 44 62 54  bTransaction DbT
49c0: 72 61 6e 73 61 63 74 69 6f 6e 0d 0a 20 20 20 20  ransaction..    
49d0: 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
49e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
49f0: 65 74 75 72 6e 20 54 72 61 6e 73 61 63 74 69 6f  eturn Transactio
4a00: 6e 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  n;..      }..   
4a10: 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d     set..      {.
4a20: 0a 20 20 20 20 20 20 20 20 54 72 61 6e 73 61 63  .        Transac
4a30: 74 69 6f 6e 20 3d 20 28 53 51 4c 69 74 65 54 72  tion = (SQLiteTr
4a40: 61 6e 73 61 63 74 69 6f 6e 29 76 61 6c 75 65 3b  ansaction)value;
4a50: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
4a60: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
4a70: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
4a80: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 65 6e 73  his function ens
4a90: 75 72 65 73 20 74 68 65 72 65 20 61 72 65 20 6e  ures there are n
4aa0: 6f 20 61 63 74 69 76 65 20 72 65 61 64 65 72 73  o active readers
4ab0: 2c 20 74 68 61 74 20 77 65 20 68 61 76 65 20 61  , that we have a
4ac0: 20 76 61 6c 69 64 20 63 6f 6e 6e 65 63 74 69 6f   valid connectio
4ad0: 6e 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 61 74  n,..    /// that
4ae0: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
4af0: 69 73 20 6f 70 65 6e 2c 20 74 68 61 74 20 61 6c  is open, that al
4b00: 6c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  l statements are
4b10: 20 70 72 65 70 61 72 65 64 20 61 6e 64 20 61 6c   prepared and al
4b20: 6c 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65  l parameters are
4b30: 20 61 73 73 69 67 6e 65 64 0d 0a 20 20 20 20 2f   assigned..    /
4b40: 2f 2f 20 69 6e 20 70 72 65 70 61 72 61 74 69 6f  // in preparatio
4b50: 6e 20 66 6f 72 20 61 6c 6c 6f 63 61 74 69 6e 67  n for allocating
4b60: 20 61 20 64 61 74 61 20 72 65 61 64 65 72 2e 0d   a data reader..
4b70: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
4b80: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
4b90: 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65   void Initialize
4ba0: 46 6f 72 52 65 61 64 65 72 28 29 0d 0a 20 20 20  ForReader()..   
4bb0: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 61   {..      if (_a
4bc0: 63 74 69 76 65 52 65 61 64 65 72 20 21 3d 20 6e  ctiveReader != n
4bd0: 75 6c 6c 20 26 26 20 5f 61 63 74 69 76 65 52 65  ull && _activeRe
4be0: 61 64 65 72 2e 49 73 41 6c 69 76 65 29 0d 0a 20  ader.IsAlive).. 
4bf0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
4c00: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
4c10: 6e 45 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61  nException("Data
4c20: 52 65 61 64 65 72 20 61 6c 72 65 61 64 79 20 61  Reader already a
4c30: 63 74 69 76 65 20 6f 6e 20 74 68 69 73 20 63 6f  ctive on this co
4c40: 6d 6d 61 6e 64 22 29 3b 0d 0a 0d 0a 20 20 20 20  mmand");....    
4c50: 20 20 69 66 20 28 5f 63 6e 6e 20 3d 3d 20 6e 75    if (_cnn == nu
4c60: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 74 68 72  ll)..        thr
4c70: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
4c80: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
4c90: 28 22 4e 6f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ("No connection 
4ca0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4cb0: 74 68 69 73 20 63 6f 6d 6d 61 6e 64 22 29 3b 0d  this command");.
4cc0: 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 63 6e  ...      if (_cn
4cd0: 6e 2e 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e 65  n.State != Conne
4ce0: 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e 29  ctionState.Open)
4cf0: 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77 20  ..        throw 
4d00: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
4d10: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 44  tionException("D
4d20: 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20 6f  atabase is not o
4d30: 70 65 6e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  pen");....      
4d40: 2f 2f 20 49 66 20 74 68 65 20 76 65 72 73 69 6f  // If the versio
4d50: 6e 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74  n of the connect
4d60: 69 6f 6e 20 68 61 73 20 63 68 61 6e 67 65 64 2c  ion has changed,
4d70: 20 63 6c 65 61 72 20 6f 75 74 20 61 6e 79 20 70   clear out any p
4d80: 72 65 76 69 6f 75 73 20 63 6f 6d 6d 61 6e 64 73  revious commands
4d90: 20 62 65 66 6f 72 65 20 73 74 61 72 74 69 6e 67   before starting
4da0: 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 63 6e 6e  ..      if (_cnn
4db0: 2e 5f 76 65 72 73 69 6f 6e 20 21 3d 20 5f 76 65  ._version != _ve
4dc0: 72 73 69 6f 6e 29 0d 0a 20 20 20 20 20 20 7b 0d  rsion)..      {.
4dd0: 0a 20 20 20 20 20 20 20 20 5f 76 65 72 73 69 6f  .        _versio
4de0: 6e 20 3d 20 5f 63 6e 6e 2e 5f 76 65 72 73 69 6f  n = _cnn._versio
4df0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 43 6c 65 61  n;..        Clea
4e00: 72 43 6f 6d 6d 61 6e 64 73 28 29 3b 0d 0a 20 20  rCommands();..  
4e10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
4e20: 2f 20 4d 61 70 20 61 6c 6c 20 70 61 72 61 6d 65  / Map all parame
4e30: 74 65 72 73 20 66 6f 72 20 73 74 61 74 65 6d 65  ters for stateme
4e40: 6e 74 73 20 61 6c 72 65 61 64 79 20 62 75 69 6c  nts already buil
4e50: 74 0d 0a 20 20 20 20 20 20 5f 70 61 72 61 6d 65  t..      _parame
4e60: 74 65 72 43 6f 6c 6c 65 63 74 69 6f 6e 2e 4d 61  terCollection.Ma
4e70: 70 50 61 72 61 6d 65 74 65 72 73 28 6e 75 6c 6c  pParameters(null
4e80: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
4e90: 20 53 65 74 20 74 68 65 20 64 65 66 61 75 6c 74   Set the default
4ea0: 20 63 6f 6d 6d 61 6e 64 20 74 69 6d 65 6f 75 74   command timeout
4eb0: 0d 0a 20 20 20 20 20 20 2f 2f 5f 63 6e 6e 2e 5f  ..      //_cnn._
4ec0: 73 71 6c 2e 53 65 74 54 69 6d 65 6f 75 74 28 5f  sql.SetTimeout(_
4ed0: 63 6f 6d 6d 61 6e 64 54 69 6d 65 6f 75 74 20 2a  commandTimeout *
4ee0: 20 31 30 30 30 29 3b 0d 0a 20 20 20 20 7d 0d 0a   1000);..    }..
4ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
4f00: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65  ry>..    /// Cre
4f10: 61 74 65 73 20 61 20 6e 65 77 20 53 51 4c 69 74  ates a new SQLit
4f20: 65 44 61 74 61 52 65 61 64 65 72 20 74 6f 20 65  eDataReader to e
4f30: 78 65 63 75 74 65 2f 69 74 65 72 61 74 65 20 74  xecute/iterate t
4f40: 68 65 20 61 72 72 61 79 20 6f 66 20 53 51 4c 69  he array of SQLi
4f50: 74 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  te prepared stat
4f60: 65 6d 65 6e 74 73 0d 0a 20 20 20 20 2f 2f 2f 20  ements..    /// 
4f70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4f80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4f90: 22 62 65 68 61 76 69 6f 72 22 3e 54 68 65 20 62  "behavior">The b
4fa0: 65 68 61 76 69 6f 72 20 74 68 65 20 64 61 74 61  ehavior the data
4fb0: 20 72 65 61 64 65 72 20 73 68 6f 75 6c 64 20 61   reader should a
4fc0: 64 6f 70 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  dopt</param>..  
4fd0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52    /// <returns>R
4fe0: 65 74 75 72 6e 73 20 61 20 53 51 4c 69 74 65 44  eturns a SQLiteD
4ff0: 61 74 61 52 65 61 64 65 72 20 6f 62 6a 65 63 74  ataReader object
5000: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
5010: 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
5020: 64 65 20 44 62 44 61 74 61 52 65 61 64 65 72 20  de DbDataReader 
5030: 45 78 65 63 75 74 65 44 62 44 61 74 61 52 65 61  ExecuteDbDataRea
5040: 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76  der(CommandBehav
5050: 69 6f 72 20 62 65 68 61 76 69 6f 72 29 0d 0a 20  ior behavior).. 
5060: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
5070: 72 6e 20 45 78 65 63 75 74 65 52 65 61 64 65 72  rn ExecuteReader
5080: 28 62 65 68 61 76 69 6f 72 29 3b 0d 0a 20 20 20  (behavior);..   
5090: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
50a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
50b0: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 72 65   This method cre
50c0: 61 74 65 73 20 61 20 6e 65 77 20 63 6f 6e 6e 65  ates a new conne
50d0: 63 74 69 6f 6e 2c 20 65 78 65 63 75 74 65 73 20  ction, executes 
50e0: 74 68 65 20 71 75 65 72 79 20 75 73 69 6e 67 20  the query using 
50f0: 74 68 65 20 67 69 76 65 6e 0d 0a 20 20 20 20 2f  the given..    /
5100: 2f 2f 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  // execution typ
5110: 65 2c 20 63 6c 6f 73 65 73 20 74 68 65 20 63 6f  e, closes the co
5120: 6e 6e 65 63 74 69 6f 6e 2c 20 61 6e 64 20 72 65  nnection, and re
5130: 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74  turns the result
5140: 73 2e 20 20 49 66 20 74 68 65 0d 0a 20 20 20 20  s.  If the..    
5150: 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  /// connection s
5160: 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 2c 20 61  tring is null, a
5170: 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 2d 6d 65   temporary in-me
5180: 6d 6f 72 79 20 64 61 74 61 62 61 73 65 20 63 6f  mory database co
5190: 6e 6e 65 63 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20  nnection will.. 
51a0: 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 2e 0d     /// be used..
51b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
51c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
51d0: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d 6d 61 6e  ram name="comman
51e0: 64 54 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  dText">..    ///
51f0: 20 54 68 65 20 74 65 78 74 20 6f 66 20 74 68 65   The text of the
5200: 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 65 20 65   command to be e
5210: 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 2f 2f  xecuted...    //
5220: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
5230: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5240: 22 65 78 65 63 75 74 65 54 79 70 65 22 3e 0d 0a  "executeType">..
5250: 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78 65 63      /// The exec
5260: 75 74 69 6f 6e 20 74 79 70 65 20 66 6f 72 20 74  ution type for t
5270: 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69  he command.  Thi
5280: 73 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74  s is used to det
5290: 65 72 6d 69 6e 65 20 77 68 69 63 68 20 6d 65 74  ermine which met
52a0: 68 6f 64 0d 0a 20 20 20 20 2f 2f 2f 20 6f 66 20  hod..    /// of 
52b0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6f 62 6a 65  the command obje
52c0: 63 74 20 74 6f 20 63 61 6c 6c 2c 20 77 68 69 63  ct to call, whic
52d0: 68 20 74 68 65 6e 20 64 65 74 65 72 6d 69 6e 65  h then determine
52e0: 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 72 65  s the type of re
52f0: 73 75 6c 74 73 0d 0a 20 20 20 20 2f 2f 2f 20 72  sults..    /// r
5300: 65 74 75 72 6e 65 64 2c 20 69 66 20 61 6e 79 2e  eturned, if any.
5310: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5320: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
5330: 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74  am name="connect
5340: 69 6f 6e 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20  ionString">..   
5350: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
5360: 69 6f 6e 20 73 74 72 69 6e 67 20 74 6f 20 74 68  ion string to th
5370: 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65  e database to be
5380: 20 6f 70 65 6e 65 64 2c 20 75 73 65 64 2c 20 61   opened, used, a
5390: 6e 64 20 63 6c 6f 73 65 64 2e 20 20 49 66 0d 0a  nd closed.  If..
53a0: 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 70 61 72      /// this par
53b0: 61 6d 65 74 65 72 20 69 73 20 6e 75 6c 6c 2c 20  ameter is null, 
53c0: 61 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 2d 6d  a temporary in-m
53d0: 65 6d 6f 72 79 20 64 61 74 61 62 73 65 20 77 69  emory databse wi
53e0: 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  ll be used...   
53f0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
5400: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5410: 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20  me="args">..    
5420: 2f 2f 2f 20 54 68 65 20 53 51 4c 20 70 61 72 61  /// The SQL para
5430: 6d 65 74 65 72 20 76 61 6c 75 65 73 20 74 6f 20  meter values to 
5440: 62 65 20 75 73 65 64 20 77 68 65 6e 20 62 75 69  be used when bui
5450: 6c 64 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e  lding the comman
5460: 64 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 0d 0a  d object to be..
5470: 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64      /// executed
5480: 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f  , if any...    /
5490: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
54a0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
54b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75      /// The resu
54c0: 6c 74 73 20 6f 66 20 74 68 65 20 71 75 65 72 79  lts of the query
54d0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 6e 6f   -OR- null if no
54e0: 20 72 65 73 75 6c 74 73 20 77 65 72 65 20 70 72   results were pr
54f0: 6f 64 75 63 65 64 20 66 72 6f 6d 20 74 68 65 0d  oduced from the.
5500: 0a 20 20 20 20 2f 2f 2f 20 67 69 76 65 6e 20 65  .    /// given e
5510: 78 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 0d 0a  xecution type...
5520: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5530: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
5540: 74 61 74 69 63 20 6f 62 6a 65 63 74 20 45 78 65  tatic object Exe
5550: 63 75 74 65 28 0d 0a 20 20 20 20 20 20 20 20 73  cute(..        s
5560: 74 72 69 6e 67 20 63 6f 6d 6d 61 6e 64 54 65 78  tring commandTex
5570: 74 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  t,..        SQLi
5580: 74 65 45 78 65 63 75 74 65 54 79 70 65 20 65 78  teExecuteType ex
5590: 65 63 75 74 65 54 79 70 65 2c 0d 0a 20 20 20 20  ecuteType,..    
55a0: 20 20 20 20 73 74 72 69 6e 67 20 63 6f 6e 6e 65      string conne
55b0: 63 74 69 6f 6e 53 74 72 69 6e 67 2c 0d 0a 20 20  ctionString,..  
55c0: 20 20 20 20 20 20 70 61 72 61 6d 73 20 6f 62 6a        params obj
55d0: 65 63 74 5b 5d 20 61 72 67 73 0d 0a 20 20 20 20  ect[] args..    
55e0: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
55f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 45 78 65        return Exe
5600: 63 75 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  cute(..         
5610: 20 20 20 63 6f 6d 6d 61 6e 64 54 65 78 74 2c 20     commandText, 
5620: 65 78 65 63 75 74 65 54 79 70 65 2c 20 43 6f 6d  executeType, Com
5630: 6d 61 6e 64 42 65 68 61 76 69 6f 72 2e 44 65 66  mandBehavior.Def
5640: 61 75 6c 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  ault,..         
5650: 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72     connectionStr
5660: 69 6e 67 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20  ing, args);..   
5670: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
5680: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5690: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 72 65   This method cre
56a0: 61 74 65 73 20 61 20 6e 65 77 20 63 6f 6e 6e 65  ates a new conne
56b0: 63 74 69 6f 6e 2c 20 65 78 65 63 75 74 65 73 20  ction, executes 
56c0: 74 68 65 20 71 75 65 72 79 20 75 73 69 6e 67 20  the query using 
56d0: 74 68 65 20 67 69 76 65 6e 0d 0a 20 20 20 20 2f  the given..    /
56e0: 2f 2f 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  // execution typ
56f0: 65 20 61 6e 64 20 63 6f 6d 6d 61 6e 64 20 62 65  e and command be
5700: 68 61 76 69 6f 72 2c 20 63 6c 6f 73 65 73 20 74  havior, closes t
5710: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 6e  he connection un
5720: 6c 65 73 73 20 61 20 64 61 74 61 0d 0a 20 20 20  less a data..   
5730: 20 2f 2f 2f 20 72 65 61 64 65 72 20 69 73 20 63   /// reader is c
5740: 72 65 61 74 65 64 2c 20 61 6e 64 20 72 65 74 75  reated, and retu
5750: 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74 73 2e  rns the results.
5760: 20 20 49 66 20 74 68 65 20 63 6f 6e 6e 65 63 74    If the connect
5770: 69 6f 6e 20 73 74 72 69 6e 67 20 69 73 0d 0a 20  ion string is.. 
5780: 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2c 20 61 20 74     /// null, a t
5790: 65 6d 70 6f 72 61 72 79 20 69 6e 2d 6d 65 6d 6f  emporary in-memo
57a0: 72 79 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ry database conn
57b0: 65 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 75  ection will be u
57c0: 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  sed...    /// </
57d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
57e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
57f0: 6f 6d 6d 61 6e 64 54 65 78 74 22 3e 0d 0a 20 20  ommandText">..  
5800: 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 20 6f    /// The text o
5810: 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 74 6f  f the command to
5820: 20 62 65 20 65 78 65 63 75 74 65 64 2e 0d 0a 20   be executed... 
5830: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
5840: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5850: 6e 61 6d 65 3d 22 65 78 65 63 75 74 65 54 79 70  name="executeTyp
5860: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
5870: 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65 20   execution type 
5880: 66 6f 72 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e  for the command.
5890: 20 20 54 68 69 73 20 69 73 20 75 73 65 64 20 74    This is used t
58a0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63  o determine whic
58b0: 68 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f 2f  h method..    //
58c0: 2f 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64  / of the command
58d0: 20 6f 62 6a 65 63 74 20 74 6f 20 63 61 6c 6c 2c   object to call,
58e0: 20 77 68 69 63 68 20 74 68 65 6e 20 64 65 74 65   which then dete
58f0: 72 6d 69 6e 65 73 20 74 68 65 20 74 79 70 65 20  rmines the type 
5900: 6f 66 20 72 65 73 75 6c 74 73 0d 0a 20 20 20 20  of results..    
5910: 2f 2f 2f 20 72 65 74 75 72 6e 65 64 2c 20 69 66  /// returned, if
5920: 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c   any...    /// <
5930: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
5940: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
5950: 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 22 3e 0d  mmandBehavior">.
5960: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d  .    /// The com
5970: 6d 61 6e 64 20 62 65 68 61 76 69 6f 72 20 66 6c  mand behavior fl
5980: 61 67 73 20 66 6f 72 20 74 68 65 20 63 6f 6d 6d  ags for the comm
5990: 61 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  and...    /// </
59a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
59b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
59c0: 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 22 3e 0d  nectionString">.
59d0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e  .    /// The con
59e0: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 74  nection string t
59f0: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  o the database t
5a00: 6f 20 62 65 20 6f 70 65 6e 65 64 2c 20 75 73 65  o be opened, use
5a10: 64 2c 20 61 6e 64 20 63 6c 6f 73 65 64 2e 20 20  d, and closed.  
5a20: 49 66 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 69 73  If..    /// this
5a30: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 6e 75   parameter is nu
5a40: 6c 6c 2c 20 61 20 74 65 6d 70 6f 72 61 72 79 20  ll, a temporary 
5a50: 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 73  in-memory databs
5a60: 65 20 77 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d  e will be used..
5a70: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
5a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
5a90: 6d 20 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a  m name="args">..
5aa0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 53 51 4c 20      /// The SQL 
5ab0: 70 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73  parameter values
5ac0: 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e   to be used when
5ad0: 20 62 75 69 6c 64 69 6e 67 20 74 68 65 20 63 6f   building the co
5ae0: 6d 6d 61 6e 64 20 6f 62 6a 65 63 74 20 74 6f 20  mmand object to 
5af0: 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 65 63  be..    /// exec
5b00: 75 74 65 64 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  uted, if any... 
5b10: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
5b20: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
5b30: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
5b40: 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 71  results of the q
5b50: 75 65 72 79 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  uery -OR- null i
5b60: 66 20 6e 6f 20 72 65 73 75 6c 74 73 20 77 65 72  f no results wer
5b70: 65 20 70 72 6f 64 75 63 65 64 20 66 72 6f 6d 20  e produced from 
5b80: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 67 69 76  the..    /// giv
5b90: 65 6e 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  en execution typ
5ba0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
5bb0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
5bc0: 69 63 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  ic static object
5bd0: 20 45 78 65 63 75 74 65 28 0d 0a 20 20 20 20 20   Execute(..     
5be0: 20 20 20 73 74 72 69 6e 67 20 63 6f 6d 6d 61 6e     string comman
5bf0: 64 54 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  dText,..        
5c00: 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79 70  SQLiteExecuteTyp
5c10: 65 20 65 78 65 63 75 74 65 54 79 70 65 2c 0d 0a  e executeType,..
5c20: 20 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 42          CommandB
5c30: 65 68 61 76 69 6f 72 20 63 6f 6d 6d 61 6e 64 42  ehavior commandB
5c40: 65 68 61 76 69 6f 72 2c 0d 0a 20 20 20 20 20 20  ehavior,..      
5c50: 20 20 73 74 72 69 6e 67 20 63 6f 6e 6e 65 63 74    string connect
5c60: 69 6f 6e 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20  ionString,..    
5c70: 20 20 20 20 70 61 72 61 6d 73 20 6f 62 6a 65 63      params objec
5c80: 74 5b 5d 20 61 72 67 73 0d 0a 20 20 20 20 20 20  t[] args..      
5c90: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
5ca0: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
5cb0: 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  tion connection 
5cc0: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
5cd0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
5ce0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
5cf0: 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  f (connectionStr
5d00: 69 6e 67 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing == null)..  
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
5d20: 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d  nnectionString =
5d30: 20 44 65 66 61 75 6c 74 43 6f 6e 6e 65 63 74 69   DefaultConnecti
5d40: 6f 6e 53 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20  onString;....   
5d50: 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28           using (
5d60: 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77  connection = new
5d70: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
5d80: 6e 28 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  n(connectionStri
5d90: 6e 67 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ng))..          
5da0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5db0: 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e       connection.
5dc0: 4f 70 65 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Open();....     
5dd0: 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67             using
5de0: 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20   (SQLiteCommand 
5df0: 63 6f 6d 6d 61 6e 64 20 3d 20 63 6f 6e 6e 65 63  command = connec
5e00: 74 69 6f 6e 2e 43 72 65 61 74 65 43 6f 6d 6d 61  tion.CreateComma
5e10: 6e 64 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  nd())..         
5e20: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
5e40: 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e 64 54 65 78  mmand.CommandTex
5e50: 74 20 3d 20 63 6f 6d 6d 61 6e 64 54 65 78 74 3b  t = commandText;
5e60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
5e70: 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67 73          if (args
5e80: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5eb0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
5ec0: 68 20 28 6f 62 6a 65 63 74 20 61 72 67 20 69 6e  h (object arg in
5ed0: 20 61 72 67 73 29 0d 0a 20 20 20 20 20 20 20 20   args)..        
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ef0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5f10: 66 20 28 61 72 67 20 69 73 20 53 51 4c 69 74 65  f (arg is SQLite
5f20: 50 61 72 61 6d 65 74 65 72 29 0d 0a 20 20 20 20  Parameter)..    
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d              comm
5f50: 61 6e 64 2e 50 61 72 61 6d 65 74 65 72 73 2e 41  and.Parameters.A
5f60: 64 64 28 28 53 51 4c 69 74 65 50 61 72 61 6d 65  dd((SQLiteParame
5f70: 74 65 72 29 61 72 67 29 3b 0d 0a 20 20 20 20 20  ter)arg);..     
5f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f90: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d               com
5fc0: 6d 61 6e 64 2e 50 61 72 61 6d 65 74 65 72 73 2e  mand.Parameters.
5fd0: 41 64 64 28 6e 65 77 20 53 51 4c 69 74 65 50 61  Add(new SQLitePa
5fe0: 72 61 6d 65 74 65 72 28 44 62 54 79 70 65 2e 4f  rameter(DbType.O
5ff0: 62 6a 65 63 74 2c 20 61 72 67 29 29 3b 0d 0a 20  bject, arg));.. 
6000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6010: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
6030: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6040: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 65         switch (e
6050: 78 65 63 75 74 65 54 79 70 65 29 0d 0a 20 20 20  xecuteType)..   
6060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6070: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6080: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
6090: 20 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79   SQLiteExecuteTy
60a0: 70 65 2e 4e 6f 6e 65 3a 0d 0a 20 20 20 20 20 20  pe.None:..      
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
60d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60e0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6110: 4e 4f 54 45 3a 20 44 6f 20 6e 6f 74 68 69 6e 67  NOTE: Do nothing
6120: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6140: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6160: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
6170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6180: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61a0: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
61b0: 65 45 78 65 63 75 74 65 54 79 70 65 2e 4e 6f 6e  eExecuteType.Non
61c0: 51 75 65 72 79 3a 0d 0a 20 20 20 20 20 20 20 20  Query:..        
61d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f         return co
6210: 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e  mmand.ExecuteNon
6220: 51 75 65 72 79 28 63 6f 6d 6d 61 6e 64 42 65 68  Query(commandBeh
6230: 61 76 69 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  avior);..       
6240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6250: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
6260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6270: 63 61 73 65 20 53 51 4c 69 74 65 45 78 65 63 75  case SQLiteExecu
6280: 74 65 54 79 70 65 2e 53 63 61 6c 61 72 3a 0d 0a  teType.Scalar:..
6290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
62d0: 65 74 75 72 6e 20 63 6f 6d 6d 61 6e 64 2e 45 78  eturn command.Ex
62e0: 65 63 75 74 65 53 63 61 6c 61 72 28 63 6f 6d 6d  ecuteScalar(comm
62f0: 61 6e 64 42 65 68 61 76 69 6f 72 29 3b 0d 0a 20  andBehavior);.. 
6300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6310: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6330: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
6340: 65 45 78 65 63 75 74 65 54 79 70 65 2e 52 65 61  eExecuteType.Rea
6350: 64 65 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  der:..          
6360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6370: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6390: 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73       bool succes
63a0: 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  s = true;....   
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
63d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
63e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6410: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6440: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 43 6c   // NOTE: The Cl
6450: 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c  oseConnection fl
6460: 61 67 20 69 73 20 62 65 69 6e 67 20 61 64 64 65  ag is being adde
6470: 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20  d here...       
6480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6490: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
64a0: 20 20 20 20 20 20 54 68 69 73 20 73 68 6f 75 6c        This shoul
64b0: 64 20 66 6f 72 63 65 20 74 68 65 20 72 65 74 75  d force the retu
64c0: 72 6e 65 64 20 64 61 74 61 20 72 65 61 64 65 72  rned data reader
64d0: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   to..           
64e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6500: 20 20 63 6c 6f 73 65 20 74 68 65 20 63 6f 6e 6e    close the conn
6510: 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 69  ection when it i
6520: 73 20 64 69 73 70 6f 73 65 64 2e 20 20 49 6e 0d  s disposed.  In.
6530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6550: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
6560: 64 65 72 20 74 6f 20 70 72 65 76 65 6e 74 20 74  der to prevent t
6570: 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 75 73  he containing us
6580: 69 6e 67 20 62 6c 6f 63 6b 0d 0a 20 20 20 20 20  ing block..     
6590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
65b0: 2f 20 20 20 20 20 20 20 66 72 6f 6d 20 64 69 73  /       from dis
65c0: 70 6f 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65  posing the conne
65d0: 63 74 69 6f 6e 20 70 72 65 6d 61 74 75 72 65 6c  ction prematurel
65e0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
65f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6600: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
6610: 20 74 68 65 20 69 6e 6e 65 72 6d 6f 73 74 20 66   the innermost f
6620: 69 6e 61 6c 6c 79 20 62 6c 6f 63 6b 20 73 65 74  inally block set
6630: 73 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 0d 0a  s the internal..
6640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6660: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 6f 2d      //       no-
6670: 64 69 73 70 6f 73 61 6c 20 66 6c 61 67 20 74 6f  disposal flag to
6680: 20 74 72 75 65 2e 20 20 54 68 65 20 6f 75 74 65   true.  The oute
6690: 72 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20  r finally..     
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
66c0: 2f 20 20 20 20 20 20 20 62 6c 6f 63 6b 20 77 69  /       block wi
66d0: 6c 6c 20 72 65 73 65 74 20 74 68 65 20 69 6e 74  ll reset the int
66e0: 65 72 6e 61 6c 20 6e 6f 2d 64 69 73 70 6f 73 61  ernal no-disposa
66f0: 6c 20 66 6c 61 67 0d 0a 20 20 20 20 20 20 20 20  l flag..        
6700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6710: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6720: 20 20 20 20 20 74 6f 20 66 61 6c 73 65 20 73 6f       to false so
6730: 20 74 68 61 74 20 74 68 65 20 64 61 74 61 20 72   that the data r
6740: 65 61 64 65 72 20 77 69 6c 6c 20 62 65 20 61 62  eader will be ab
6750: 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
6760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6770: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
6780: 20 74 6f 20 28 65 76 65 6e 74 75 61 6c 6c 79 29   to (eventually)
6790: 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20   dispose of the 
67a0: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
67b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
67e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6800: 63 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52  command.ExecuteR
6810: 65 61 64 65 72 28 0d 0a 20 20 20 20 20 20 20 20  eader(..        
6820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6840: 63 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 20  commandBehavior 
6850: 7c 20 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  | CommandBehavio
6860: 72 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  r.CloseConnectio
6870: 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n);..           
6880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6890: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
68a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68b0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
68e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6900: 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20        success = 
6910: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
6920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6930: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
6940: 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w;..            
6950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6960: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
6990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
69c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69d0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
69e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6a00: 2f 20 4e 4f 54 45 3a 20 49 66 20 61 6e 20 65 78  / NOTE: If an ex
6a10: 63 65 70 74 69 6f 6e 20 77 61 73 20 6e 6f 74 20  ception was not 
6a20: 74 68 72 6f 77 6e 2c 20 74 68 61 74 20 63 61 6e  thrown, that can
6a30: 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20   only..         
6a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
6a60: 20 20 20 20 6d 65 61 6e 20 74 68 65 20 64 61 74      mean the dat
6a70: 61 20 72 65 61 64 65 72 20 77 61 73 20 73 75 63  a reader was suc
6a80: 63 65 73 73 66 75 6c 6c 79 20 63 72 65 61 74 65  cessfully create
6a90: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
6aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ab0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6ac0: 61 6e 64 20 6e 6f 77 20 6f 77 6e 73 20 74 68 65  and now owns the
6ad0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68   connection.  Th
6ae0: 65 72 65 66 6f 72 65 2c 20 73 65 74 0d 0a 20 20  erefore, set..  
6af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b10: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69    //       the i
6b20: 6e 74 65 72 6e 61 6c 20 6e 6f 2d 64 69 73 70 6f  nternal no-dispo
6b30: 73 61 6c 20 66 6c 61 67 20 28 74 65 6d 70 6f 72  sal flag (tempor
6b40: 61 72 69 6c 79 29 0d 0a 20 20 20 20 20 20 20 20  arily)..        
6b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6b70: 20 20 20 20 20 69 6e 20 6f 72 64 65 72 20 74 6f       in order to
6b80: 20 65 78 69 74 20 74 68 65 20 63 6f 6e 74 61 69   exit the contai
6b90: 6e 69 6e 67 20 75 73 69 6e 67 20 62 6c 6f 63 6b  ning using block
6ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bc0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
6bd0: 69 74 68 6f 75 74 20 64 69 73 70 6f 73 69 6e 67  ithout disposing
6be0: 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
6bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c00: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
6c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c30: 20 20 69 66 20 28 73 75 63 63 65 73 73 29 0d 0a    if (success)..
6c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c60: 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69          connecti
6c70: 6f 6e 2e 5f 6e 6f 44 69 73 70 6f 73 65 20 3d 20  on._noDispose = 
6c80: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
6c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ca0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6cc0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
6cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6cf0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
6d00: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
6d10: 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
6d20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6d30: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6d40: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4e 6f       // NOTE: No
6d50: 77 20 74 68 61 74 20 74 68 65 20 75 73 69 6e 67  w that the using
6d60: 20 62 6c 6f 63 6b 20 68 61 73 20 62 65 65 6e 20   block has been 
6d70: 65 78 69 74 65 64 2c 20 72 65 73 65 74 20 74 68  exited, reset th
6d80: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
6d90: 2f 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  /       internal
6da0: 20 64 69 73 70 6f 73 61 6c 20 66 6c 61 67 20 66   disposal flag f
6db0: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
6dc0: 6e 2e 20 20 54 68 69 73 20 69 73 0d 0a 20 20 20  n.  This is..   
6dd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6de0: 20 20 61 6c 77 61 79 73 20 64 6f 6e 65 20 69 66    always done if
6df0: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
6e00: 77 61 73 20 63 72 65 61 74 65 64 20 62 65 63 61  was created beca
6e10: 75 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  use..           
6e20: 20 2f 2f 20 20 20 20 20 20 20 69 74 20 77 69 6c   //       it wil
6e30: 6c 20 62 65 20 68 61 72 6d 6c 65 73 73 20 77 68  l be harmless wh
6e40: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
6e50: 20 64 61 74 61 20 72 65 61 64 65 72 0d 0a 20 20   data reader..  
6e60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6e70: 20 20 20 6e 6f 77 20 6f 77 6e 73 20 69 74 2e 0d     now owns it..
6e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
6e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
6ea0: 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e  (connection != n
6eb0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6ec0: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
6ed0: 2e 5f 6e 6f 44 69 73 70 6f 73 65 20 3d 20 66 61  ._noDispose = fa
6ee0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
6ef0: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
6f00: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 0d 0a  n null;..    }..
6f10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
6f20: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 76 65  ry>..    /// Ove
6f30: 72 72 69 64 65 73 20 74 68 65 20 64 65 66 61 75  rrides the defau
6f40: 6c 74 20 62 65 68 61 76 69 6f 72 20 74 6f 20 72  lt behavior to r
6f50: 65 74 75 72 6e 20 61 20 53 51 4c 69 74 65 44 61  eturn a SQLiteDa
6f60: 74 61 52 65 61 64 65 72 20 73 70 65 63 69 61 6c  taReader special
6f70: 69 7a 61 74 69 6f 6e 20 63 6c 61 73 73 0d 0a 20  ization class.. 
6f80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6f90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6fa0: 6d 20 6e 61 6d 65 3d 22 62 65 68 61 76 69 6f 72  m name="behavior
6fb0: 22 3e 54 68 65 20 66 6c 61 67 73 20 74 6f 20 62  ">The flags to b
6fc0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
6fd0: 68 20 74 68 65 20 72 65 61 64 65 72 2e 3c 2f 70  h the reader.</p
6fe0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
6ff0: 72 65 74 75 72 6e 73 3e 41 20 53 51 4c 69 74 65  returns>A SQLite
7000: 44 61 74 61 52 65 61 64 65 72 3c 2f 72 65 74 75  DataReader</retu
7010: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
7020: 20 6e 65 77 20 53 51 4c 69 74 65 44 61 74 61 52   new SQLiteDataR
7030: 65 61 64 65 72 20 45 78 65 63 75 74 65 52 65 61  eader ExecuteRea
7040: 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76  der(CommandBehav
7050: 69 6f 72 20 62 65 68 61 76 69 6f 72 29 0d 0a 20  ior behavior).. 
7060: 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63     {..      Chec
7070: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
7080: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
7090: 74 69 6f 6e 2e 43 68 65 63 6b 28 5f 63 6e 6e 29  tion.Check(_cnn)
70a0: 3b 0d 0a 20 20 20 20 20 20 49 6e 69 74 69 61 6c  ;..      Initial
70b0: 69 7a 65 46 6f 72 52 65 61 64 65 72 28 29 3b 0d  izeForReader();.
70c0: 0a 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65 44  ...      SQLiteD
70d0: 61 74 61 52 65 61 64 65 72 20 72 64 20 3d 20 6e  ataReader rd = n
70e0: 65 77 20 53 51 4c 69 74 65 44 61 74 61 52 65 61  ew SQLiteDataRea
70f0: 64 65 72 28 74 68 69 73 2c 20 62 65 68 61 76 69  der(this, behavi
7100: 6f 72 29 3b 0d 0a 20 20 20 20 20 20 5f 61 63 74  or);..      _act
7110: 69 76 65 52 65 61 64 65 72 20 3d 20 6e 65 77 20  iveReader = new 
7120: 57 65 61 6b 52 65 66 65 72 65 6e 63 65 28 72 64  WeakReference(rd
7130: 2c 20 66 61 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20  , false);....   
7140: 20 20 20 72 65 74 75 72 6e 20 72 64 3b 0d 0a 20     return rd;.. 
7150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
7160: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7170: 2f 2f 20 4f 76 65 72 72 69 64 65 73 20 74 68 65  // Overrides the
7180: 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f   default behavio
7190: 72 20 6f 66 20 44 62 44 61 74 61 52 65 61 64 65  r of DbDataReade
71a0: 72 20 74 6f 20 72 65 74 75 72 6e 20 61 20 73 70  r to return a sp
71b0: 65 63 69 61 6c 69 7a 65 64 20 53 51 4c 69 74 65  ecialized SQLite
71c0: 44 61 74 61 52 65 61 64 65 72 20 63 6c 61 73 73  DataReader class
71d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
71e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
71f0: 65 74 75 72 6e 73 3e 41 20 53 51 4c 69 74 65 44  eturns>A SQLiteD
7200: 61 74 61 52 65 61 64 65 72 3c 2f 72 65 74 75 72  ataReader</retur
7210: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
7220: 6e 65 77 20 53 51 4c 69 74 65 44 61 74 61 52 65  new SQLiteDataRe
7230: 61 64 65 72 20 45 78 65 63 75 74 65 52 65 61 64  ader ExecuteRead
7240: 65 72 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  er()..    {..   
7250: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
7260: 28 29 3b 0d 0a 20 20 20 20 20 20 53 51 4c 69 74  ();..      SQLit
7270: 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 68 65 63  eConnection.Chec
7280: 6b 28 5f 63 6e 6e 29 3b 0d 0a 20 20 20 20 20 20  k(_cnn);..      
7290: 72 65 74 75 72 6e 20 45 78 65 63 75 74 65 52 65  return ExecuteRe
72a0: 61 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61  ader(CommandBeha
72b0: 76 69 6f 72 2e 44 65 66 61 75 6c 74 29 3b 0d 0a  vior.Default);..
72c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
72d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
72e0: 2f 2f 2f 20 43 61 6c 6c 65 64 20 62 79 20 74 68  /// Called by th
72f0: 65 20 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  e SQLiteDataRead
7300: 65 72 20 77 68 65 6e 20 74 68 65 20 64 61 74 61  er when the data
7310: 20 72 65 61 64 65 72 20 69 73 20 63 6c 6f 73 65   reader is close
7320: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
7330: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
7340: 72 6e 61 6c 20 76 6f 69 64 20 43 6c 65 61 72 44  rnal void ClearD
7350: 61 74 61 52 65 61 64 65 72 28 29 0d 0a 20 20 20  ataReader()..   
7360: 20 7b 0d 0a 20 20 20 20 20 20 5f 61 63 74 69 76   {..      _activ
7370: 65 52 65 61 64 65 72 20 3d 20 6e 75 6c 6c 3b 0d  eReader = null;.
7380: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
7390: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
73a0: 20 2f 2f 2f 20 45 78 65 63 75 74 65 20 74 68 65   /// Execute the
73b0: 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 72 65 74   command and ret
73c0: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
73d0: 66 20 72 6f 77 73 20 69 6e 73 65 72 74 65 64 2f  f rows inserted/
73e0: 75 70 64 61 74 65 64 20 61 66 66 65 63 74 65 64  updated affected
73f0: 20 62 79 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f   by it...    ///
7400: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7410: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
7420: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
7430: 20 69 6e 73 65 72 74 65 64 2f 75 70 64 61 74 65   inserted/update
7440: 64 20 61 66 66 65 63 74 65 64 20 62 79 20 69 74  d affected by it
7450: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
7460: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
7470: 20 69 6e 74 20 45 78 65 63 75 74 65 4e 6f 6e 51   int ExecuteNonQ
7480: 75 65 72 79 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  uery()..    {.. 
7490: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
74a0: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
74b0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
74c0: 6e 2e 43 68 65 63 6b 28 5f 63 6e 6e 29 3b 0d 0a  n.Check(_cnn);..
74d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 45          return E
74e0: 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 43  xecuteNonQuery(C
74f0: 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 2e 44  ommandBehavior.D
7500: 65 66 61 75 6c 74 29 3b 0d 0a 20 20 20 20 7d 0d  efault);..    }.
7510: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
7520: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 78  ary>..    /// Ex
7530: 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e  ecute the comman
7540: 64 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65  d and return the
7550: 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20   number of rows 
7560: 69 6e 73 65 72 74 65 64 2f 75 70 64 61 74 65 64  inserted/updated
7570: 20 61 66 66 65 63 74 65 64 20 62 79 20 69 74 2e   affected by it.
7580: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
7590: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
75a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 62 65 68 61 76  aram name="behav
75b0: 69 6f 72 22 3e 54 68 65 20 66 6c 61 67 73 20 74  ior">The flags t
75c0: 6f 20 62 65 20 61 73 73 6f 63 69 61 74 65 64 20  o be associated 
75d0: 77 69 74 68 20 74 68 65 20 72 65 61 64 65 72 2e  with the reader.
75e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
75f0: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 6e  / <returns>The n
7600: 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e  umber of rows in
7610: 73 65 72 74 65 64 2f 75 70 64 61 74 65 64 20 61  serted/updated a
7620: 66 66 65 63 74 65 64 20 62 79 20 69 74 2e 3c 2f  ffected by it.</
7630: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
7640: 62 6c 69 63 20 69 6e 74 20 45 78 65 63 75 74 65  blic int Execute
7650: 4e 6f 6e 51 75 65 72 79 28 0d 0a 20 20 20 20 20  NonQuery(..     
7660: 20 20 20 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69     CommandBehavi
7670: 6f 72 20 62 65 68 61 76 69 6f 72 0d 0a 20 20 20  or behavior..   
7680: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
7690: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
76a0: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 53 51 4c  ed();..      SQL
76b0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 68  iteConnection.Ch
76c0: 65 63 6b 28 5f 63 6e 6e 29 3b 0d 0a 0d 0a 20 20  eck(_cnn);....  
76d0: 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74      using (SQLit
76e0: 65 44 61 74 61 52 65 61 64 65 72 20 72 65 61 64  eDataReader read
76f0: 65 72 20 3d 20 45 78 65 63 75 74 65 52 65 61 64  er = ExecuteRead
7700: 65 72 28 62 65 68 61 76 69 6f 72 20 7c 0d 0a 20  er(behavior |.. 
7710: 20 20 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64           Command
7720: 42 65 68 61 76 69 6f 72 2e 53 69 6e 67 6c 65 52  Behavior.SingleR
7730: 6f 77 20 7c 20 43 6f 6d 6d 61 6e 64 42 65 68 61  ow | CommandBeha
7740: 76 69 6f 72 2e 53 69 6e 67 6c 65 52 65 73 75 6c  vior.SingleResul
7750: 74 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  t))..      {..  
7760: 20 20 20 20 20 20 77 68 69 6c 65 20 28 72 65 61        while (rea
7770: 64 65 72 2e 4e 65 78 74 52 65 73 75 6c 74 28 29  der.NextResult()
7780: 29 20 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ) ;..        ret
7790: 75 72 6e 20 72 65 61 64 65 72 2e 52 65 63 6f 72  urn reader.Recor
77a0: 64 73 41 66 66 65 63 74 65 64 3b 0d 0a 20 20 20  dsAffected;..   
77b0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
77c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
77d0: 0d 0a 20 20 20 20 2f 2f 2f 20 45 78 65 63 75 74  ..    /// Execut
77e0: 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 6e  e the command an
77f0: 64 20 72 65 74 75 72 6e 20 74 68 65 20 66 69 72  d return the fir
7800: 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65  st column of the
7810: 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68   first row of th
7820: 65 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20 20  e resultset..   
7830: 20 2f 2f 2f 20 28 69 66 20 70 72 65 73 65 6e 74   /// (if present
7840: 29 2c 20 6f 72 20 6e 75 6c 6c 20 69 66 20 6e 6f  ), or null if no
7850: 20 72 65 73 75 6c 74 73 65 74 20 77 61 73 20 72   resultset was r
7860: 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f  eturned...    //
7870: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7880: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
7890: 68 65 20 66 69 72 73 74 20 63 6f 6c 75 6d 6e 20  he first column 
78a0: 6f 66 20 74 68 65 20 66 69 72 73 74 20 72 6f 77  of the first row
78b0: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 72 65   of the first re
78c0: 73 75 6c 74 73 65 74 20 66 72 6f 6d 20 74 68 65  sultset from the
78d0: 20 71 75 65 72 79 2e 3c 2f 72 65 74 75 72 6e 73   query.</returns
78e0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  >..    public ov
78f0: 65 72 72 69 64 65 20 6f 62 6a 65 63 74 20 45 78  erride object Ex
7900: 65 63 75 74 65 53 63 61 6c 61 72 28 29 0d 0a 20  ecuteScalar().. 
7910: 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63     {..      Chec
7920: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
7930: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
7940: 74 69 6f 6e 2e 43 68 65 63 6b 28 5f 63 6e 6e 29  tion.Check(_cnn)
7950: 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ;..      return 
7960: 45 78 65 63 75 74 65 53 63 61 6c 61 72 28 43 6f  ExecuteScalar(Co
7970: 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 2e 44 65  mmandBehavior.De
7980: 66 61 75 6c 74 29 3b 0d 0a 20 20 20 20 7d 0d 0a  fault);..    }..
7990: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
79a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 78 65  ry>..    /// Exe
79b0: 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64  cute the command
79c0: 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20   and return the 
79d0: 66 69 72 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20  first column of 
79e0: 74 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66  the first row of
79f0: 20 74 68 65 20 72 65 73 75 6c 74 73 65 74 0d 0a   the resultset..
7a00: 20 20 20 20 2f 2f 2f 20 28 69 66 20 70 72 65 73      /// (if pres
7a10: 65 6e 74 29 2c 20 6f 72 20 6e 75 6c 6c 20 69 66  ent), or null if
7a20: 20 6e 6f 20 72 65 73 75 6c 74 73 65 74 20 77 61   no resultset wa
7a30: 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  s returned...   
7a40: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7a50: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7a60: 6e 61 6d 65 3d 22 62 65 68 61 76 69 6f 72 22 3e  name="behavior">
7a70: 54 68 65 20 66 6c 61 67 73 20 74 6f 20 62 65 20  The flags to be 
7a80: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
7a90: 74 68 65 20 72 65 61 64 65 72 2e 3c 2f 70 61 72  the reader.</par
7aa0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
7ab0: 74 75 72 6e 73 3e 54 68 65 20 66 69 72 73 74 20  turns>The first 
7ac0: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 66 69  column of the fi
7ad0: 72 73 74 20 72 6f 77 20 6f 66 20 74 68 65 20 66  rst row of the f
7ae0: 69 72 73 74 20 72 65 73 75 6c 74 73 65 74 20 66  irst resultset f
7af0: 72 6f 6d 20 74 68 65 20 71 75 65 72 79 2e 3c 2f  rom the query.</
7b00: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
7b10: 62 6c 69 63 20 6f 62 6a 65 63 74 20 45 78 65 63  blic object Exec
7b20: 75 74 65 53 63 61 6c 61 72 28 0d 0a 20 20 20 20  uteScalar(..    
7b30: 20 20 20 20 43 6f 6d 6d 61 6e 64 42 65 68 61 76      CommandBehav
7b40: 69 6f 72 20 62 65 68 61 76 69 6f 72 0d 0a 20 20  ior behavior..  
7b50: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
7b60: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
7b70: 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 53 51  sed();..      SQ
7b80: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43  LiteConnection.C
7b90: 68 65 63 6b 28 5f 63 6e 6e 29 3b 0d 0a 0d 0a 20  heck(_cnn);.... 
7ba0: 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
7bb0: 74 65 44 61 74 61 52 65 61 64 65 72 20 72 65 61  teDataReader rea
7bc0: 64 65 72 20 3d 20 45 78 65 63 75 74 65 52 65 61  der = ExecuteRea
7bd0: 64 65 72 28 62 65 68 61 76 69 6f 72 20 7c 0d 0a  der(behavior |..
7be0: 20 20 20 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e            Comman
7bf0: 64 42 65 68 61 76 69 6f 72 2e 53 69 6e 67 6c 65  dBehavior.Single
7c00: 52 6f 77 20 7c 20 43 6f 6d 6d 61 6e 64 42 65 68  Row | CommandBeh
7c10: 61 76 69 6f 72 2e 53 69 6e 67 6c 65 52 65 73 75  avior.SingleResu
7c20: 6c 74 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  lt))..      {.. 
7c30: 20 20 20 20 20 20 20 69 66 20 28 72 65 61 64 65         if (reade
7c40: 72 2e 52 65 61 64 28 29 29 0d 0a 20 20 20 20 20  r.Read())..     
7c50: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 61 64       return read
7c60: 65 72 5b 30 5d 3b 0d 0a 20 20 20 20 20 20 7d 0d  er[0];..      }.
7c70: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75  .      return nu
7c80: 6c 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ll;..    }....  
7c90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7ca0: 0a 20 20 20 20 2f 2f 2f 20 44 6f 65 73 20 6e 6f  .    /// Does no
7cb0: 74 68 69 6e 67 2e 20 20 43 6f 6d 6d 61 6e 64 73  thing.  Commands
7cc0: 20 61 72 65 20 70 72 65 70 61 72 65 64 20 61 73   are prepared as
7cd0: 20 74 68 65 79 20 61 72 65 20 65 78 65 63 75 74   they are execut
7ce0: 65 64 20 74 68 65 20 66 69 72 73 74 20 74 69 6d  ed the first tim
7cf0: 65 2c 20 61 6e 64 20 6b 65 70 74 20 69 6e 20 70  e, and kept in p
7d00: 72 65 70 61 72 65 64 20 73 74 61 74 65 20 61 66  repared state af
7d10: 74 65 72 77 61 72 64 73 2e 0d 0a 20 20 20 20 2f  terwards...    /
7d20: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7d30: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
7d40: 64 65 20 76 6f 69 64 20 50 72 65 70 61 72 65 28  de void Prepare(
7d50: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
7d60: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
7d70: 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f  ..      SQLiteCo
7d80: 6e 6e 65 63 74 69 6f 6e 2e 43 68 65 63 6b 28 5f  nnection.Check(_
7d90: 63 6e 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  cnn);..    }....
7da0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7db0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20  >..    /// Sets 
7dc0: 74 68 65 20 6d 65 74 68 6f 64 20 74 68 65 20 53  the method the S
7dd0: 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 42 75 69 6c  QLiteCommandBuil
7de0: 64 65 72 20 75 73 65 73 20 74 6f 20 64 65 74 65  der uses to dete
7df0: 72 6d 69 6e 65 20 68 6f 77 20 74 6f 20 75 70 64  rmine how to upd
7e00: 61 74 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20  ate inserted or 
7e10: 75 70 64 61 74 65 64 20 72 6f 77 73 20 69 6e 20  updated rows in 
7e20: 61 20 44 61 74 61 54 61 62 6c 65 2e 0d 0a 20 20  a DataTable...  
7e30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7e40: 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61  ..    [DefaultVa
7e50: 6c 75 65 28 55 70 64 61 74 65 52 6f 77 53 6f 75  lue(UpdateRowSou
7e60: 72 63 65 2e 4e 6f 6e 65 29 5d 0d 0a 20 20 20 20  rce.None)]..    
7e70: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
7e80: 55 70 64 61 74 65 52 6f 77 53 6f 75 72 63 65 20  UpdateRowSource 
7e90: 55 70 64 61 74 65 64 52 6f 77 53 6f 75 72 63 65  UpdatedRowSource
7ea0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
7eb0: 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  et..      {..   
7ec0: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7ed0: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 72  ed();..        r
7ee0: 65 74 75 72 6e 20 5f 75 70 64 61 74 65 52 6f 77  eturn _updateRow
7ef0: 53 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20 20 7d  Source;..      }
7f00: 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20  ..      set..   
7f10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68     {..        Ch
7f20: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
7f30: 20 20 20 20 20 20 20 20 5f 75 70 64 61 74 65 52          _updateR
7f40: 6f 77 53 6f 75 72 63 65 20 3d 20 76 61 6c 75 65  owSource = value
7f50: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
7f60: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
7f70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7f80: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
7f90: 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 76 69 73  e command is vis
7fa0: 69 62 6c 65 20 61 74 20 64 65 73 69 67 6e 20 74  ible at design t
7fb0: 69 6d 65 2e 20 20 44 65 66 61 75 6c 74 73 20 74  ime.  Defaults t
7fc0: 6f 20 54 72 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f  o True...    ///
7fd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66   </summary>..#if
7fe0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7ff0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8000: 20 5b 44 65 73 69 67 6e 4f 6e 6c 79 28 74 72 75   [DesignOnly(tru
8010: 65 29 2c 20 42 72 6f 77 73 61 62 6c 65 28 66 61  e), Browsable(fa
8020: 6c 73 65 29 2c 20 44 65 66 61 75 6c 74 56 61 6c  lse), DefaultVal
8030: 75 65 28 74 72 75 65 29 2c 20 45 64 69 74 6f 72  ue(true), Editor
8040: 42 72 6f 77 73 61 62 6c 65 28 45 64 69 74 6f 72  Browsable(Editor
8050: 42 72 6f 77 73 61 62 6c 65 53 74 61 74 65 2e 4e  BrowsableState.N
8060: 65 76 65 72 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  ever)]..#endif..
8070: 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
8080: 69 64 65 20 62 6f 6f 6c 20 44 65 73 69 67 6e 54  ide bool DesignT
8090: 69 6d 65 56 69 73 69 62 6c 65 0d 0a 20 20 20 20  imeVisible..    
80a0: 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
80b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
80c0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
80d0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
80e0: 5f 64 65 73 69 67 6e 54 69 6d 65 56 69 73 69 62  _designTimeVisib
80f0: 6c 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  le;..      }..  
8100: 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b      set..      {
8110: 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44  ..        CheckD
8120: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
8130: 20 20 20 20 20 20 5f 64 65 73 69 67 6e 54 69 6d        _designTim
8140: 65 56 69 73 69 62 6c 65 20 3d 20 76 61 6c 75 65  eVisible = value
8150: 3b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ;..#if !PLATFORM
8160: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8170: 4b 0d 0a 20 20 20 20 20 20 20 20 54 79 70 65 44  K..        TypeD
8180: 65 73 63 72 69 70 74 6f 72 2e 52 65 66 72 65 73  escriptor.Refres
8190: 68 28 74 68 69 73 29 3b 0d 0a 23 65 6e 64 69 66  h(this);..#endif
81a0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
81b0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
81c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
81d0: 6c 6f 6e 65 73 20 61 20 63 6f 6d 6d 61 6e 64 2c  lones a command,
81e0: 20 69 6e 63 6c 75 64 69 6e 67 20 61 6c 6c 20 69   including all i
81f0: 74 73 20 70 61 72 61 6d 65 74 65 72 73 0d 0a 20  ts parameters.. 
8200: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8210: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
8220: 72 6e 73 3e 41 20 6e 65 77 20 53 51 4c 69 74 65  rns>A new SQLite
8230: 43 6f 6d 6d 61 6e 64 20 77 69 74 68 20 74 68 65  Command with the
8240: 20 73 61 6d 65 20 63 6f 6d 6d 61 6e 64 74 65 78   same commandtex
8250: 74 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e  t, connection an
8260: 64 20 70 61 72 61 6d 65 74 65 72 73 3c 2f 72 65  d parameters</re
8270: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
8280: 69 63 20 6f 62 6a 65 63 74 20 43 6c 6f 6e 65 28  ic object Clone(
8290: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
82a0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
82b0: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e  ..      return n
82c0: 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  ew SQLiteCommand
82d0: 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (this);..    }..
82e0: 20 20 7d 0d 0a 7d                                  }..}