public void TablesTest() { DataBase db = Connect(); var generator = new OKHOSTING.Sql.MySql.SqlGenerator(); //Create table team Table team = new Table("team"); team.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = team }); team.Columns.Add(new Column() { Name = "Name", DbType = DbType.AnsiString, Length = 50, IsNullable = false, Table = team }); team.Columns.Add(new Column() { Name = "Leage", DbType = DbType.Int32, IsNullable = false, Table = team }); team.Columns.Add(new Column() { Name = "Country", DbType = DbType.Int32, IsNullable = false, Table = team }); //Create table leage Table leage = new Table("leage"); leage.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = leage }); leage.Columns.Add(new Column() { Name = "Name", DbType = DbType.AnsiString, IsNullable = false, Table = leage }); //Create table country Table country = new Table("country"); country.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = country }); country.Columns.Add(new Column() { Name = "Name", DbType = DbType.AnsiString, IsNullable = false, Table = country }); //Create ForeignKey FK_team_country ForeignKey countryFK = new ForeignKey(); countryFK.Table = team; countryFK.RemoteTable = country; countryFK.Name = "FK_team_country"; countryFK.Columns.Add(new Tuple <Column, Column>(team["Country"], country["Id"])); countryFK.DeleteAction = countryFK.UpdateAction = ConstraintAction.Restrict; //Create ForeignKey FK_team_leage ForeignKey leageFK = new ForeignKey(); leageFK.Table = team; leageFK.RemoteTable = leage; leageFK.Name = "FK_team_leage"; leageFK.Columns.Add(new Tuple <Column, Column>(team["Leage"], leage["Id"])); leageFK.DeleteAction = countryFK.UpdateAction = ConstraintAction.Restrict; Command sql = generator.Create(team); db.Execute(sql); sql = generator.Create(leage); db.Execute(sql); sql = generator.Create(country); db.Execute(sql); //insert Country Insert insert = new Insert(); insert.Table = country; insert.Values.Add(new ColumnValue(country["Id"], 15)); insert.Values.Add(new ColumnValue(country["Name"], "Argentina")); sql = generator.Insert(insert); int affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); insert = new Insert(); insert.Table = country; insert.Values.Add(new ColumnValue(country["Id"], 10)); insert.Values.Add(new ColumnValue(country["Name"], "Brasil")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //insert leage insert = new Insert(); insert.Table = leage; insert.Values.Add(new ColumnValue(leage["Id"], 100)); insert.Values.Add(new ColumnValue(leage["Name"], "Champions")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); insert = new Insert(); insert.Table = leage; insert.Values.Add(new ColumnValue(leage["Id"], 110)); insert.Values.Add(new ColumnValue(leage["Name"], "Concacaff")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //insert team insert = new Insert(); insert.Table = team; insert.Values.Add(new ColumnValue(team["Id"], 1)); insert.Values.Add(new ColumnValue(team["Name"], "Barza")); insert.Values.Add(new ColumnValue(team["Leage"], 100)); insert.Values.Add(new ColumnValue(team["Country"], 10)); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); insert = new Insert(); insert.Table = team; insert.Values.Add(new ColumnValue(team["Id"], 2)); insert.Values.Add(new ColumnValue(team["Name"], "Pumas")); insert.Values.Add(new ColumnValue(team["Leage"], 110)); insert.Values.Add(new ColumnValue(team["Country"], 15)); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //select Select select = new Select(); select.Table = team; select.Columns.Add(new SelectColumn(team["id"])); select.Columns.Add(new SelectColumn(team["Name"])); //Create inner join to country SelectJoin join = new SelectJoin(); join.Table = country; join.On.Add(new ColumnCompareFilter() { Column = team["country"], ColumnToCompare = country["id"], Operator = Data.CompareOperator.Equal }); join.Columns.Add(new SelectColumn(country["name"], "countryName")); join.JoinType = SelectJoinType.Inner; select.Joins.Add(join); //Create inner join to leage SelectJoin join2 = new SelectJoin(); join2.Table = leage; join2.On.Add(new ColumnCompareFilter() { Column = team["leage"], ColumnToCompare = leage["id"], Operator = Data.CompareOperator.Equal }); join2.Columns.Add(new SelectColumn(leage["name"], "leageName")); join2.JoinType = SelectJoinType.Inner; select.Joins.Add(join2); sql = generator.Select(select); //delete Delete delete = new Delete(); delete.Table = leage; delete.Where.Add(new ValueCompareFilter() { Column = leage["id"], ValueToCompare = 110, Operator = Data.CompareOperator.Equal }); sql = generator.Delete(delete); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //drop table leage sql = generator.Drop(leage); db.Execute(sql); Assert.IsFalse(db.ExistsTable(leage.Name)); //drop table country sql = generator.Drop(country); db.Execute(sql); Assert.IsFalse(db.ExistsTable(country.Name)); //drop table team sql = generator.Drop(team); db.Execute(sql); Assert.IsFalse(db.ExistsTable(team.Name)); }
public void CreateTable() { DataBase db = Connect(); var generator = new OKHOSTING.Sql.MySql.SqlGenerator(); //define table schema Table table = new Table("test1"); table.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = table }); table.Columns.Add(new Column() { Name = "TextField", DbType = DbType.AnsiString, Length = 100, IsNullable = false, Table = table }); table.Columns.Add(new Column() { Name = "NumberField", DbType = DbType.Int32, IsNullable = false, Table = table }); table.Indexes.Add(new Index() { Name = "IX_TextField", Unique = true, Table = table }); table.Indexes[0].Columns.Add(table["TextField"]); //create var sql = generator.Create(table); db.Execute(sql); Assert.IsTrue(db.ExistsTable(table.Name)); //add index sql = generator.Create(table.Indexes[0]); db.Execute(sql); //insert Insert insert = new Insert(); insert.Table = table; insert.Values.Add(new ColumnValue(table["Id"], 1)); insert.Values.Add(new ColumnValue(table["TextField"], "test11")); insert.Values.Add(new ColumnValue(table["NumberField"], 100)); sql = generator.Insert(insert); int affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //select Select select = new Select(); select.Table = table; select.Columns.Add(table["id"]); select.Columns.Add(table["TextField"]); select.Where.Add(new ValueCompareFilter() { Column = table["TextField"], ValueToCompare = "test11", Operator = Data.CompareOperator.Equal }); sql = generator.Select(select); var result = db.GetDataTable(sql); foreach (IDataRow row in result) { foreach (object obj in row) { Console.Write(obj); } } Assert.AreEqual(result.Count, 1); //delete Delete delete = new Delete(); delete.Table = table; delete.Where.Add(new ValueCompareFilter() { Column = table["TextField"], ValueToCompare = "test11", Operator = Data.CompareOperator.Equal }); sql = generator.Delete(delete); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //drop sql = generator.Drop(table); db.Execute(sql); Assert.IsFalse(db.ExistsTable(table.Name)); }
public void TablesTest() { DataBase db = Connect(); var generator = new OKHOSTING.Sql.MySql.SqlGenerator(); //Create table team Table team = new Table("team"); team.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = team }); team.Columns.Add(new Column() { Name = "Name", DbType = DbType.AnsiString, Length = 50, IsNullable = false, Table = team }); team.Columns.Add(new Column() { Name = "Leage", DbType = DbType.Int32, IsNullable = false, Table = team }); team.Columns.Add(new Column() { Name = "Country", DbType = DbType.Int32, IsNullable = false, Table = team }); //Create table leage Table leage = new Table("leage"); leage.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = leage }); leage.Columns.Add(new Column() { Name = "Name", DbType = DbType.AnsiString, IsNullable = false, Table = leage }); //Create table country Table country = new Table("country"); country.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = country }); country.Columns.Add(new Column() { Name = "Name", DbType = DbType.AnsiString, IsNullable = false, Table = country }); //Create ForeignKey FK_team_country ForeignKey countryFK = new ForeignKey(); countryFK.Table = team; countryFK.RemoteTable = country; countryFK.Name = "FK_team_country"; countryFK.Columns.Add(new Tuple<Column, Column>(team["Country"], country["Id"])); countryFK.DeleteAction = countryFK.UpdateAction = ConstraintAction.Restrict; //Create ForeignKey FK_team_leage ForeignKey leageFK = new ForeignKey(); leageFK.Table = team; leageFK.RemoteTable = leage; leageFK.Name = "FK_team_leage"; leageFK.Columns.Add(new Tuple<Column, Column>(team["Leage"], leage["Id"])); leageFK.DeleteAction = countryFK.UpdateAction = ConstraintAction.Restrict; Command sql = generator.Create(team); db.Execute(sql); sql = generator.Create(leage); db.Execute(sql); sql = generator.Create(country); db.Execute(sql); //insert Country Insert insert = new Insert(); insert.Table = country; insert.Values.Add(new ColumnValue(country["Id"], 15)); insert.Values.Add(new ColumnValue(country["Name"], "Argentina")); sql = generator.Insert(insert); int affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); insert = new Insert(); insert.Table = country; insert.Values.Add(new ColumnValue(country["Id"], 10)); insert.Values.Add(new ColumnValue(country["Name"], "Brasil")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //insert leage insert = new Insert(); insert.Table = leage; insert.Values.Add(new ColumnValue(leage["Id"], 100)); insert.Values.Add(new ColumnValue(leage["Name"], "Champions")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); insert = new Insert(); insert.Table = leage; insert.Values.Add(new ColumnValue(leage["Id"], 110)); insert.Values.Add(new ColumnValue(leage["Name"], "Concacaff")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //insert team insert = new Insert(); insert.Table = team; insert.Values.Add(new ColumnValue(team["Id"], 1)); insert.Values.Add(new ColumnValue(team["Name"], "Barza")); insert.Values.Add(new ColumnValue(team["Leage"], 100)); insert.Values.Add(new ColumnValue(team["Country"], 10)); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); insert = new Insert(); insert.Table = team; insert.Values.Add(new ColumnValue(team["Id"], 2)); insert.Values.Add(new ColumnValue(team["Name"], "Pumas")); insert.Values.Add(new ColumnValue(team["Leage"], 110)); insert.Values.Add(new ColumnValue(team["Country"], 15)); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //select Select select = new Select(); select.Table = team; select.Columns.Add(new SelectColumn(team["id"])); select.Columns.Add(new SelectColumn(team["Name"])); //Create inner join to country SelectJoin join = new SelectJoin(); join.Table = country; join.On.Add(new ColumnCompareFilter() { Column = team["country"], ColumnToCompare = country["id"], Operator = Data.CompareOperator.Equal }); join.Columns.Add(new SelectColumn(country["name"], "countryName")); join.JoinType = SelectJoinType.Inner; select.Joins.Add(join); //Create inner join to leage SelectJoin join2 = new SelectJoin(); join2.Table = leage; join2.On.Add(new ColumnCompareFilter() { Column = team["leage"], ColumnToCompare = leage["id"], Operator = Data.CompareOperator.Equal }); join2.Columns.Add(new SelectColumn(leage["name"], "leageName")); join2.JoinType = SelectJoinType.Inner; select.Joins.Add(join2); sql = generator.Select(select); //delete Delete delete = new Delete(); delete.Table = leage; delete.Where.Add(new ValueCompareFilter() { Column = leage["id"], ValueToCompare = 110, Operator = Data.CompareOperator.Equal }); sql = generator.Delete(delete); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //drop table leage sql = generator.Drop(leage); db.Execute(sql); Assert.IsFalse(db.ExistsTable(leage.Name)); //drop table country sql = generator.Drop(country); db.Execute(sql); Assert.IsFalse(db.ExistsTable(country.Name)); //drop table team sql = generator.Drop(team); db.Execute(sql); Assert.IsFalse(db.ExistsTable(team.Name)); }
public void CreateTable() { DataBase db = Connect(); var generator = new OKHOSTING.Sql.MySql.SqlGenerator(); //define table schema Table table = new Table("test1"); table.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = table }); table.Columns.Add(new Column() { Name = "TextField", DbType = DbType.AnsiString, Length = 100, IsNullable = false, Table = table }); table.Columns.Add(new Column() { Name = "NumberField", DbType = DbType.Int32, IsNullable = false, Table = table }); table.Indexes.Add(new Index() { Name = "IX_TextField", Unique = true, Table = table }); table.Indexes[0].Columns.Add(table["TextField"]); //create var sql = generator.Create(table); db.Execute(sql); Assert.IsTrue(db.ExistsTable(table.Name)); //add index sql = generator.Create(table.Indexes[0]); db.Execute(sql); //insert Insert insert = new Insert(); insert.Table = table; insert.Values.Add(new ColumnValue(table["Id"], 1)); insert.Values.Add(new ColumnValue(table["TextField"], "test11")); insert.Values.Add(new ColumnValue(table["NumberField"], 100)); sql = generator.Insert(insert); int affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //select Select select = new Select(); select.Table = table; select.Columns.Add(table["id"]); select.Columns.Add(table["TextField"]); select.Where.Add(new ValueCompareFilter(){ Column = table["TextField"], ValueToCompare = "test11", Operator = Data.CompareOperator.Equal }); sql = generator.Select(select); var result = db.GetDataTable(sql); foreach (IDataRow row in result) { foreach (object obj in row) { Console.Write(obj); } } Assert.AreEqual(result.Count, 1); //delete Delete delete = new Delete(); delete.Table = table; delete.Where.Add(new ValueCompareFilter() { Column = table["TextField"], ValueToCompare = "test11", Operator = Data.CompareOperator.Equal }); sql = generator.Delete(delete); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //drop sql = generator.Drop(table); db.Execute(sql); Assert.IsFalse(db.ExistsTable(table.Name)); }
public void dropRow() { //Open connect to database; DataBase db = Connect(); var generator = new OKHOSTING.Sql.MySql.SqlGenerator(); //define table customer Table table = new Table("Customer"); table.Columns.Add(new Column() { Name = "Id", DbType = DbType.Int32, IsPrimaryKey = true, IsAutoNumber = true, Table = table }); table.Columns.Add(new Column() { Name = "Company", DbType = DbType.AnsiString, Length = 100, IsNullable = false, Table = table }); table.Columns.Add(new Column() { Name = "Address", DbType = DbType.AnsiString, Length = 500, IsNullable = false, Table = table }); table.Columns.Add(new Column() { Name = "Email", DbType = DbType.AnsiString, Length = 50, IsNullable = false, Table = table }); table.Columns.Add(new Column() { Name = "Telephone", DbType = DbType.AnsiString, Length = 12, IsNullable = false, Table = table }); //create table customer var sql = generator.Create(table); db.Execute(sql); Assert.IsTrue(db.ExistsTable(table.Name)); //insert values into customer Insert insert = new Insert(); insert.Table = table; insert.Values.Add(new ColumnValue(table["Id"], 1)); insert.Values.Add(new ColumnValue(table["Company"], "Software Create Inc.")); insert.Values.Add(new ColumnValue(table["Address"], "San Angel #123-A Col. Metropolis Mexico. D.F.")); insert.Values.Add(new ColumnValue(table["Email"], "*****@*****.**")); insert.Values.Add(new ColumnValue(table["Telephone"], "013318592634")); sql = generator.Insert(insert); int affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //insert values into customer insert = new Insert(); insert.Table = table; insert.Values.Add(new ColumnValue(table["Id"], 2)); insert.Values.Add(new ColumnValue(table["Company"], "Monsters Inc. Corporate")); insert.Values.Add(new ColumnValue(table["Address"], "First Street #12 Blv. Flowers San Diego. C.A.")); insert.Values.Add(new ColumnValue(table["Email"], "*****@*****.**")); insert.Values.Add(new ColumnValue(table["Telephone"], "0122389456278")); sql = generator.Insert(insert); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); //delete row from customer.company = Monsters Inc. Corporate Delete delete = new Delete(); delete.Table = table; delete.Where.Add(new ValueCompareFilter() { Column = table["Company"], ValueToCompare = "Monsters Inc. Corporate", Operator = Data.CompareOperator.Equal }); sql = generator.Delete(delete); affectedRows = db.Execute(sql); Assert.AreEqual(affectedRows, 1); }