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;
}
}
}