0% found this document useful (0 votes)
244 views

Subsonic Tutorial by Query Type: Insert The Record

The document provides examples of how to perform various SQL queries using the Subsonic ORM framework, including inserting, updating, deleting records, selecting single records by primary key or other fields, performing joins across multiple tables, calling stored procedures, and using aggregate functions. Code samples are given for each type of query to demonstrate how to build and execute queries within Subsonic.

Uploaded by

Moe Iskandarani
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
244 views

Subsonic Tutorial by Query Type: Insert The Record

The document provides examples of how to perform various SQL queries using the Subsonic ORM framework, including inserting, updating, deleting records, selecting single records by primary key or other fields, performing joins across multiple tables, calling stored procedures, and using aggregate functions. Code samples are given for each type of query to demonstrate how to build and execute queries within Subsonic.

Uploaded by

Moe Iskandarani
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Subsonic Tutorial by Query type

For example install subsonic 2.2 and setup as per following link to generate the code:

Insert the Record

//Fill the object to save. Please make sure that you fill all must (not
null) object
Supplier sup = new Supplier();
sup.Address = "Test Address";
sup.City = "Ahmedabad";
sup.CompanyName = "IntelliPro";
sup.ContactName = "Test Contact";
sup.ContactTitle = "Manager";
sup.Country = "India";
sup.Fax = "01234567";
sup.HomePage = "http://www.xyz.com";
sup.Phone = "01293202";
sup.PostalCode = "380051";
sup.Region = "Test Region";

// call save
sup.Save();

Update the Record

//Fetch the object which is required to save. 30 is id of record


Supplier sup = new Supplier(30);

// Fill the property which needs to be saved.


sup.PostalCode = "380052";
sup.Region = "TestRegion2";

// call save
sup.Save();

Delete the Record


//If there are IsDelete flag then this function make true in this column.
Else it delete the record from the database.
Supplier.Delete(30);

//In case you have IsDelete flag and you want to delete the function, use
following code.
Supplier.Destroy(30);
Select all Record

// You can select all the record 2 ways.


// First using supplier object
SupplierCollection colSup = new SupplierCollection();
colSup.LoadAndCloseReader(Supplier.FetchAll());

// now colSup has all the record

// Second is just us collection's Load method


SupplierCollection colSup = new SupplierCollection();
colSup.Load();

Select record by primary key

// 30 is primary key and in new object just pass it to the constructor


Supplier sup = new Supplier(30);

// if object successfully fetched from the database then following property


will be true. So you can check to verify the record sometime whether record
is loaded or not.
sup.IsLoaded

Select record by parameter other than primary key (but only one
parameter)

SupplierCollection colSup = new SupplierCollection();


// It defaults to equal operation in FetchByParameter function
colSup.LoadAndCloseReader(Supplier.FetchByParameter
(Supplier.Columns.Country,"India") );

// IF you want to use another comparision operator, you can use


colSup.LoadAndCloseReader(Supplier.FetchByParameter
(Supplier.Columns.Country, SubSonic.Comparison.NotEquals,"India") );

// You can also apply order by at the end. To generate order by, you must
use its static function Asc or Desc
// e.g. OrderBy.Asc or OrderBy.Desc and supply column name into the same.
colSup.LoadAndCloseReader(Supplier.FetchByParameter
(Supplier.Columns.Country, SubSonic.Comparison.NotEquals,"India",
OrderBy.Asc(Supplier.Columns.City) ) );

Following are the list of comparisions which we can use into comparing the parameter.

public enum Comparison


{
Equals = 0,
NotEquals = 1,
Like = 2,
NotLike = 3,
GreaterThan = 4,
GreaterOrEquals = 5,
LessThan = 6,
LessOrEquals = 7,
Blank = 8,
Is = 9,
IsNot = 10,
In = 11,
NotIn = 12,
OpenParentheses = 13,
CloseParentheses = 14,
BetweenAnd = 15,
}

Select record by parameter other than primary key (but more than one
parameter)

// There are two methods for doing this. You can use any.

// First one is following


SupplierCollection colSup = new SupplierCollection();

colSup.Where(Supplier.Columns.City,"Ahmedabad");
colSup.Where(Supplier.Columns.CompanyName, Comparison.Like ,"Intelli");

// you can also use order by before calling Load function to order the
result.
colSup.OrderByAsc(Supplier.Columns.PostalCode);

// Following statement load the records with above condition. Here one
thing to note that
// It only uses where and that also with AND default. you cannot do OR
here. For that
// you need to use second option
colSup.Load();

// Here is second method for doing the similar kind of thing

// Here you need to pass tablename or schema in the query.


// If Tables structure is available then you can pass Tables.Supplier else
you can pass
// TableName.schema object
Query qry = new Query(Supplier.Schema);

// Query has many function and you can use multiple function for your query
qry.AddWhere(Supplier.Columns.City,"Ahmedabad");
qry.OR(Supplier.Columns.CompanyName, Comparison.Like ,"Intelli");

qry.OrderBy = OrderBy.Asc(Supplier.Columns.City);

SupplierCollection colSup = new SupplierCollection();


// It defaults to equal operation in FetchByParameter function
colSup.LoadAndCloseReader(qry.ExecuteReader());
Other Methods of the Query Objects

// Set order by. Its property. You can use order_by function as well.
qry.OrderBy

// Make In and Non In query


qry.IN
qry.NOT_IN

// And and OR condition


qry.AND
qry.OR

// Where condition
qry.AddWhere

// Find record between values


qry.AddBetweenValues

// Find record between dates


qry.AddBetweenAnd

You have other methods of query to execute other than execute reader.

You can use, Execute for update query, ExecuteDataSet for getting dataset and ExecuteScaler for
scalar values.

Select from more than one table


There is no method available in 2.0.3 for the join. So we will use only View right now. But there are
other method in latest version of subsonic for directly making Joins.

Suppose you wanted Invoices from the 5 tables joined, you can create the view Invoice and then you
can use that object same way like tables and also you can query view to filter the data like tables.

Calling Stored Procedures


When you generate classes, the class is generated automatically for each stored procedure and
views. For stored procedure SPs class is generated and all stored procedures are as static function so
you can directly call without creating object as I have done below. You can find stored procedure in
Northwind database.

StoredProcedure spSales = SPs.SalesByCategory("Test","2009");


DataSet ds = spSales.GetDataSet();

// Generally we use object's collection to take the result in. So we can


create one view like
// SalesByCategoryResult and take this result into it by calling funcitons
like that

SalesByCategoryResultCollection colSup = new


SalesByCategoryResultCollection();
colSup.LoadAndCloseReader(spSales.GetReader());
Customized Query (Which do not fit in any of above point)

There are two ways. Either you can make stored procedure and generate the SP function and use it
or you can make the query as below.

// Make sql statement. But make sure that you do not hardcode any values.
Below query can be made with subsonic
// but it is used just only for example.
string query = "SELECT * FROM " + Supplier.Schema.TableName + " WHERE " +
Supplier.Columns.Address + " LIKE %abc%";

// Now create querycommand object with above query


QueryCommand qc = new QueryCommand(query);

// DataService class is used to run query command object. QueryCommand


object is generally used for
// making parameterized queries which might not be fitted using query
object. And you can take those
// Values in Collection
SupplierCollection colSup = new SupplierCollection();
colSup.LoadAndCloseReader(DataService.GetReader(qc));

Aggregate Functions
If you want to use aggregate function on some table, you can use it following way.

Query qry = new Query(Supplier.Schema);

// following returns Maximum supplierid in the table


int SupplierId = qry.GetMax(Supplier.Columns.SupplierID);

//There are other functions available for aggregate in query


qry.GetAverage
qry.GetCount
qry.GetMin
qry.GetSum

You might also like