using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using SqliteDotNet; using System.Data; using System.Data.SqlTypes; namespace SqliteGUI { /// /// Summary description for TableEditForm. /// public class TableEditForm : System.Windows.Forms.Form { private System.Windows.Forms.DataGrid dataGrid1; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; private SqliteDb database; private SqliteVm vm = null; private DataTable dataTable = null; public TableEditForm() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if ((null != database) && (!Form1.IsReadOnly(database.GetName()))) { WriteBack(); } if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.dataGrid1 = new System.Windows.Forms.DataGrid(); ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit(); this.SuspendLayout(); // // dataGrid1 // this.dataGrid1.DataMember = ""; this.dataGrid1.Dock = System.Windows.Forms.DockStyle.Fill; this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText; this.dataGrid1.Location = new System.Drawing.Point(0, 0); this.dataGrid1.Name = "dataGrid1"; this.dataGrid1.Size = new System.Drawing.Size(492, 473); this.dataGrid1.TabIndex = 0; // // TableEditForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(492, 473); this.Controls.Add(this.dataGrid1); this.Name = "TableEditForm"; this.Text = "TableEditForm"; ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit(); this.ResumeLayout(false); } #endregion public void LoadTable(SqliteDb newDatabase, string tableName) { this.Name = tableName; this.SetDatabase(newDatabase); DataGridTableStyle tableStyle = new DataGridTableStyle(); tableStyle.MappingName = tableName; if (tableName == "TestCase") { tableStyle.PreferredRowHeight *= 3; } else if (tableName == "ApiTestResults" || tableName == "HttpTestResults") { tableStyle.PreferredRowHeight *= 2; } int gridWidth = 0; vm = new SqliteVm(database, true); if (vm != null) { dataTable = new DataTable(tableName); string sql = String.Format("select rowid, * from {0} ;", tableName); int sqErr = vm.Execute(sql); int nCols = vm.NumCols(); for (int i = 0; i 1) { insertStmt += ",";} insertStmt += dataTable.Columns[j].ColumnName; } insertStmt += ") VALUES ("; for (int j=1; j 1) { insertStmt += ",";} insertStmt += String.Format("\"{0}\"", row[j].ToString()); } insertStmt += ");"; sqErr = vm.Execute(insertStmt); } break; case DataRowState.Deleted: { // hack... rejectchanges to get the row back... row.RejectChanges(); object obj = row[0]; if (obj != null) { string rowId = obj.ToString(); if (rowId != null && rowId.Length > 0) { string deleteStmt = String.Format("DELETE FROM {0} WHERE rowid = {1};", dataTable.TableName, rowId); sqErr = vm.Execute(deleteStmt); } } row.Delete(); } break; case DataRowState.Modified: { int nCols = dataTable.Columns.Count; string updateStmt = String.Format("UPDATE {0} SET ", dataTable.TableName); for (int j=1; j 1) { updateStmt += ",";} updateStmt += String.Format("{0}=\"{1}\"", dataTable.Columns[j].ColumnName, row[j].ToString()); } updateStmt += String.Format(" WHERE rowid = {0};", row[0].ToString()); sqErr = vm.Execute(updateStmt); } break; case DataRowState.Unchanged: { // do nothing ; ; } break; default: break; } } vm.SqlFinalize(); vm = null; } public void SetDatabase(SqliteDb newDatabase) { this.database = newDatabase; } } }