using System;
using System.IO;
using SQLppNET;
using SQLppNET.Adaptors;
using SQLppNET.Queries;
using SQLppNET.Expressions;
using SQLppNET.Generators;
namespace SQLppNETTest
{
/// <summary>
/// Description r�sum�e de Class1.
/// </summary>
class Class1
{
/// <summary>
/// Point d'entr�e principal de l'application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Testing SQLppNET assembly");
try
{
Console.WriteLine("Create db");
MySQLDatabaseAdaptor Mysql = new MySQLDatabaseAdaptor();
Database db = new Database("mydb", Mysql);
Console.WriteLine("Adding tables");
DBTable Clients = db.AddTable("Clients","Client");
DBTable Products = db.AddTable("Products","Product");
DBTable Orders = db.AddTable("Orders","Order");
Console.WriteLine("Adding primary keys");
Clients.AddPrimaryKey("ID",new DataType(DataType.DBType.DataTypeInt));
Products.AddPrimaryKey("ID",new DataType(DataType.DBType.DataTypeInt));
Orders.AddPrimaryKey("ID",new DataType(DataType.DBType.DataTypeInt));
Console.WriteLine("Adding clients fields");
Clients.AddField("FirstName","varchar(50)",true);
Clients.AddField("LastName","varchar(50)",true);
Console.WriteLine("Adding products fields");
Products.AddField("Name","varchar(50)",true);
Products.AddField("Price","money",true);
Console.WriteLine("Adding orders fields");
Orders.AddForeignKey( Clients);
Orders.AddForeignKey( Products );
Orders.AddField("Quantity", "int", true);
Console.WriteLine("Get database create statement");
Console.WriteLine( db.CreateStatement );
Console.WriteLine("Iterating tables");
DBTableEnumerator table = db.Tables;
while (table.MoveNext())
{
Console.WriteLine("\ttable: " + ((DBTable)table.Current).Name );
}
Console.WriteLine("Iterator fields");
DBFieldEnumerator field = Clients.Fields;
while (field.MoveNext())
{
Console.WriteLine("\tfield: " + ((DBField)field.Current).Name );
}
Console.WriteLine("Creating query");
SelectQuery q = db.CreateQuery();
QueryTable qo = q.AddTable( Orders, "O" );
QueryTable qc = q.AddTable( Clients, "C");
QueryTable qp = q.AddTable( Products, "P");
q.Join( qo, qc);
q.Join( qo, qp );
q.AddField( FieldExpression.Link( qc, Clients.get_Field( "FirstName" ) ), "" );
using (StreamWriter sw1 = File.CreateText("q.dot"))
{
sw1.Write( q.Dot );
}
Console.WriteLine( q.Sql );
Console.WriteLine( CSGenerator.TableAccessor( Clients, "Sql" ) );
Console.WriteLine( db.Dot );
using (StreamWriter sw = File.CreateText("db.dot"))
{
sw.Write( db.Dot );
}
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.Message );
}
Console.ReadLine();
}
}
}