Form1.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. #region Using directives
  2. using System;
  3. using System.Drawing;
  4. using System.Collections;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using System.Data.SQLiteClient;
  8. using System.Data.SQLiteClient.Native;
  9. using System.Runtime.InteropServices;
  10. using System.Text;
  11. using System.IO;
  12. #endregion
  13. namespace SQLiteTest
  14. {
  15. /// <summary>
  16. /// Summary description for form.
  17. /// </summary>
  18. public class Form1 : System.Windows.Forms.Form
  19. {
  20. private MainMenu mainMenu1;
  21. private MenuItem menuItem1;
  22. private MenuItem menuItem2;
  23. private ListView listView1;
  24. private ColumnHeader columnHeader1;
  25. private MenuItem menuItem3;
  26. private MenuItem menuItem4;
  27. private MenuItem menuItem5;
  28. SQLiteConnection _Connection;
  29. public Form1()
  30. {
  31. InitializeComponent();
  32. }
  33. /// <summary>
  34. /// Clean up any resources being used.
  35. /// </summary>
  36. protected override void Dispose(bool disposing)
  37. {
  38. base.Dispose(disposing);
  39. }
  40. #region Windows Form Designer generated code
  41. /// <summary>
  42. /// Required method for Designer support - do not modify
  43. /// the contents of this method with the code editor.
  44. /// </summary>
  45. private void InitializeComponent()
  46. {
  47. this.mainMenu1 = new System.Windows.Forms.MainMenu();
  48. this.menuItem1 = new System.Windows.Forms.MenuItem();
  49. this.menuItem2 = new System.Windows.Forms.MenuItem();
  50. this.menuItem3 = new System.Windows.Forms.MenuItem();
  51. this.menuItem4 = new System.Windows.Forms.MenuItem();
  52. this.menuItem5 = new System.Windows.Forms.MenuItem();
  53. this.listView1 = new System.Windows.Forms.ListView();
  54. this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
  55. //
  56. // mainMenu1
  57. //
  58. this.mainMenu1.MenuItems.Add(this.menuItem1);
  59. this.mainMenu1.MenuItems.Add(this.menuItem2);
  60. //
  61. // menuItem1
  62. //
  63. this.menuItem1.Text = "Exit";
  64. this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
  65. //
  66. // menuItem2
  67. //
  68. this.menuItem2.MenuItems.Add(this.menuItem3);
  69. this.menuItem2.MenuItems.Add(this.menuItem4);
  70. this.menuItem2.MenuItems.Add(this.menuItem5);
  71. this.menuItem2.Text = "Tests";
  72. //
  73. // menuItem3
  74. //
  75. this.menuItem3.Text = "SQLite Version";
  76. this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click);
  77. //
  78. // menuItem4
  79. //
  80. this.menuItem4.Text = "Fill Database";
  81. this.menuItem4.Click += new System.EventHandler(this.menuItem4_Click);
  82. //
  83. // menuItem5
  84. //
  85. this.menuItem5.Text = "Show Orders Table";
  86. this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click);
  87. //
  88. // listView1
  89. //
  90. this.listView1.Columns.Add(this.columnHeader1);
  91. this.listView1.Location = new System.Drawing.Point(0, 0);
  92. this.listView1.Size = new System.Drawing.Size(205, 174);
  93. this.listView1.View = System.Windows.Forms.View.Details;
  94. //
  95. // columnHeader1
  96. //
  97. this.columnHeader1.Text = "Orders Table";
  98. this.columnHeader1.Width = 200;
  99. //
  100. // Form1
  101. //
  102. this.ClientSize = new System.Drawing.Size(176, 180);
  103. this.Controls.Add(this.listView1);
  104. this.Menu = this.mainMenu1;
  105. this.Text = "SQLite Test";
  106. this.Load += new System.EventHandler(this.Form1_Load);
  107. }
  108. #endregion
  109. /// <summary>
  110. /// The main entry point for the application.
  111. /// </summary>
  112. static void Main()
  113. {
  114. Application.Run(new Form1());
  115. }
  116. private void menuItem1_Click(object sender, EventArgs e)
  117. {
  118. _Connection.Close();
  119. Close();
  120. }
  121. private void AddOrder(SQLiteTransaction trans, int id, int items, string customer, double amount)
  122. {
  123. SQLiteCommand cmd = _Connection.CreateCommand("insert into Orders (Id, Items, Customer, Amount) values (@Id, @Items, @Customer, @Amount)");
  124. cmd.Transaction = trans;
  125. cmd.Parameters.Add("@Id", DbType.Int32).Value = id;
  126. cmd.Parameters.Add("@Items", DbType.Int32).Value = items;
  127. cmd.Parameters.Add("@Customer", DbType.String).Value = customer;
  128. cmd.Parameters.Add("@Amount", DbType.Single).Value = amount;
  129. cmd.ExecuteNonQuery();
  130. }
  131. private void AddOrderDetail(SQLiteTransaction trans, int id, int orderId, string article)
  132. {
  133. SQLiteCommand cmd = _Connection.CreateCommand("insert into OrderDetails (Id, OrderId, Article) values (@Id, @OrderId, @Article)");
  134. cmd.Transaction = trans;
  135. cmd.Parameters.Add("@Id", DbType.Int32).Value = id;
  136. cmd.Parameters.Add("@OrderId", DbType.Int32).Value = orderId;
  137. cmd.Parameters.Add("@Article", DbType.String).Value = article;
  138. cmd.ExecuteNonQuery();
  139. }
  140. private void InitializeTables()
  141. {
  142. SQLiteCommand cmd = _Connection.CreateCommand();
  143. cmd.CommandText = "create table Orders (Id int, items int, Customer varchar(50), amount float)";
  144. cmd.ExecuteNonQuery();
  145. cmd.CommandText = "create table OrderDetails (Id int, OrderId int, article varchar(50))";
  146. cmd.ExecuteNonQuery();
  147. SQLiteTransaction trans = _Connection.BeginTransaction();
  148. AddOrder(trans, 1, 3, "Peter Parker", 250.30);
  149. AddOrder(trans, 2, 2, "Superman", 504);
  150. AddOrder(trans, 3, 1, "Indiana Jones", 96.34);
  151. AddOrder(trans, 4, 4, "Dark Vader", 1111.11);
  152. AddOrderDetail(trans, 1, 1, "costume");
  153. AddOrderDetail(trans, 2, 1, "snacks");
  154. AddOrderDetail(trans, 3, 1, "shoes");
  155. AddOrderDetail(trans, 4, 2, "costume");
  156. AddOrderDetail(trans, 5, 2, "hairgel");
  157. AddOrderDetail(trans, 6, 3, "whip");
  158. AddOrderDetail(trans, 7, 4, "helmet");
  159. AddOrderDetail(trans, 8, 4, "sword");
  160. AddOrderDetail(trans, 9, 4, "cape");
  161. AddOrderDetail(trans, 10, 4, "The force");
  162. trans.Commit();
  163. }
  164. private void menuItem3_Click(object sender, EventArgs e)
  165. {
  166. MessageBox.Show(string.Format("SQLite Version: {0}", _Connection.SQLiteVersion));
  167. }
  168. private void Form1_Load(object sender, EventArgs e)
  169. {
  170. _Connection = new SQLiteConnection("Data Source=c:\\data\\redfivelabs\\temp\\SQLiteTest.sqlite;NewDatabase=True;Synchronous=Off;Encoding=UTF8;Emulator=false");
  171. _Connection.Open();
  172. }
  173. private void menuItem4_Click(object sender, EventArgs e)
  174. {
  175. try
  176. {
  177. InitializeTables();
  178. MessageBox.Show("Tables filled.");
  179. }
  180. catch (Exception ex)
  181. {
  182. MessageBox.Show(ex.ToString());
  183. }
  184. }
  185. private void menuItem5_Click(object sender, EventArgs e)
  186. {
  187. try
  188. {
  189. listView1.Items.Clear();
  190. SQLiteCommand cmd = _Connection.CreateCommand("select id, items, customer, amount from orders");
  191. SQLiteDataReader reader = cmd.ExecuteReader();
  192. while (reader.Read())
  193. {
  194. //ListViewItem item = listView1.Items.Add(new ListViewItem(reader.GetInt32(0).ToString()));
  195. //item.SubItems.Add(reader.GetInt32(1).ToString());
  196. //item.SubItems.Add(reader.GetString(2));
  197. //item.SubItems.Add(reader.GetInt32(3).ToString());
  198. string line = string.Format("Id: {0}, Items: {1}, Customer: {2}, Amount: {3}", reader.GetInt32(0), reader.GetInt32(1), reader.GetString(2), reader.GetInt32(3));
  199. listView1.Items.Add(new ListViewItem(line));
  200. }
  201. reader.Close();
  202. listView1.Focus();
  203. }
  204. catch (Exception ex)
  205. {
  206. MessageBox.Show(ex.ToString());
  207. }
  208. }
  209. }
  210. }