First thing you are not doing any tiers in your coding. Tiers involves for segregation of responsibilities, so that each tier perform independent of other. In other words tiers are substitutable. In you coding at button click has access to your persistence logic. I am not seeing any kind of separation.
DataSet ds = obj.binsert(p); The 'p' travels down the stack but not used anywhere.
public DataSet dal_insert(adddelBookProps p)
{
string query = "select * from books ";
DataSet ds = obj.insertRecord(query);
return ds;
}
The p coming to the above function and died.
DataSet ds = obj.binsert(p);
This down the stack calls to update the database, but after that you are altering the dataset...
DataSet ds = obj.binsert(p);
DataTable dt = ds.Tables["Table"];
dt.TableName = "books";
DataRow dr = ds.Tables["books"].NewRow();
dr["bookno"] = booknotxt.Text;
dr["isbn"] = isbntxt.Text;
dr["booktitle"] = booktitletxt.Text;
dr["author"] = authortxt.Text;
dr["quantity"] = quantitytxt.Text;
dr["price"] = pricetxt.Text;
dr["pubyear"] = pytxt.Text;
ds.Tables["books"].Rows.Add(dr);
The changes are not going to be persisted.
If you are not clear about layering then can use a simple model or an readily available entity framework model/ template or the data driven template Asp.Net Dynamic Data Entities Web Applications may help. When you start a new project these templates will be available.
Determine your application is a data driven or model driven. ASP.Net has an MVC framework which works well for data driven applications.
If you want to create a tiered enterprise application these books may be helpful. Refer Martin Fowlers Pattern's of Enterprise Application Architecture. Wrox publisher's Domain Driven Design with C# and Professional Asp.Net Design Patterns.
If your application is simple one make it simple, no need confuse with tiers
Good luck