473,395 Members | 1,649 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

Database Application Example

Gav
I'm writing a windows application (using C# VS 2005 Pro) to access a MS SQL
database and although it is working fine (up to now) I'm not sure I'm going
about it in the best way. Can anybody point me to any good examples online
that i can look at, found loads of web applications but struggling to find a
good windows application example.

thanks

Gav
Oct 25 '07 #1
5 14234

"Gav" <ga*@nospam.comwrote in message
news:%2****************@TK2MSFTNGP02.phx.gbl...
I'm writing a windows application (using C# VS 2005 Pro) to access a MS
SQL database and although it is working fine (up to now) I'm not sure I'm
going about it in the best way. Can anybody point me to any good examples
online that i can look at, found loads of web applications but struggling
to find a good windows application example.
If you abstract the form from the data access, then it shouldn't matter what
the form Web or Windows is being used. The form should be decoupled from
data access with SQL Server.

http://msdn.microsoft.com/msdnmag/is...taAccessLayer/
http://www.c-sharpcorner.com/UploadF...egant_dal.aspx

I am sure you can find other examples using Google about the DAL.

You might also want to look into the UI/Business layer/Data Access layer
concepts

The UI uses a business layer object to access the data access layer object.
The UI never makes a direct call to the DAL or no direct calls to the
database. It goes through the business object.

You can do an even more abstraction of the UI from all other layers by using
MVP concepts. No reference to the BL at all from the UP, the UI goes through
the presentation layer to the BL and BL to the DAL, using interfaces. The UI
should be unaware of the BL. You return all properties of the BL object on
the MVP interface. If you need to bind data from SQL server to a control,
then you use a DataTable as the return type through the MVP interface, as an
example from the BL/DAL objects. No BL object and it's properties should
ever be addressed at UI.

UI/MVP/BL/DAL.

MODEL-VIEW-PRESENTER

http://www.polymorphicpodcast.com/

click 'Shows'

click 'Design Patterns Bootcamp: Model View * Patterns*

view parts 1-5

You can use Google to get more information about this or find books.

MODEL-VIEW-PRESENTER

http://www.polymorphicpodcast.com/

click 'Shows'

click 'Design Patterns Bootcamp: Model View * Patterns*

view parts 1-5

You can use Google to get more information about this or find books.

You should also understand an object's Public accessor properties of Get/Set
in C#.


Oct 25 '07 #2

http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!140.entry

Download the source code.

Basically, replace the "Program.cs" with a new Folder, like
"Presentation.Winforms" (aka, create a new folder, and put your form files
in there)
and you'll have a NLayered application.

In my demo, the console application is the "presentation layer", as crappy
as it is.

The code-behind of your buttons (on any of your forms) shouldn't know
anything about database connection strings, sqlcommand, sql connection
objects.
They should know about the BusinessLayer.

You might want to get the 1.1 version of the project above:
http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!139.entry

because there I think I seperate out the layers into different assemblies.
The second link also has a VERY GOOD MS link at the bottom. Go find that
article and read it, reread it a few times.

"Gav" <ga*@nospam.comwrote in message
news:%2****************@TK2MSFTNGP02.phx.gbl...
I'm writing a windows application (using C# VS 2005 Pro) to access a MS
SQL database and although it is working fine (up to now) I'm not sure I'm
going about it in the best way. Can anybody point me to any good examples
online that i can look at, found loads of web applications but struggling
to find a good windows application example.

thanks

Gav

Oct 25 '07 #3
Gav

"Mr. Arnold" <MR. Ar****@Arnold.comwrote in message
news:ed**************@TK2MSFTNGP02.phx.gbl...
>
"Gav" <ga*@nospam.comwrote in message
news:%2****************@TK2MSFTNGP02.phx.gbl...
>I'm writing a windows application (using C# VS 2005 Pro) to access a MS
SQL database and although it is working fine (up to now) I'm not sure I'm
going about it in the best way. Can anybody point me to any good examples
online that i can look at, found loads of web applications but struggling
to find a good windows application example.

If you abstract the form from the data access, then it shouldn't matter
what the form Web or Windows is being used. The form should be decoupled
from data access with SQL Server.

http://msdn.microsoft.com/msdnmag/is...taAccessLayer/
http://www.c-sharpcorner.com/UploadF...egant_dal.aspx

I am sure you can find other examples using Google about the DAL.

You might also want to look into the UI/Business layer/Data Access layer
concepts

The UI uses a business layer object to access the data access layer
object. The UI never makes a direct call to the DAL or no direct calls to
the database. It goes through the business object.

You can do an even more abstraction of the UI from all other layers by
using MVP concepts. No reference to the BL at all from the UP, the UI goes
through the presentation layer to the BL and BL to the DAL, using
interfaces. The UI should be unaware of the BL. You return all properties
of the BL object on the MVP interface. If you need to bind data from SQL
server to a control, then you use a DataTable as the return type through
the MVP interface, as an example from the BL/DAL objects. No BL object and
it's properties should ever be addressed at UI.

UI/MVP/BL/DAL.

MODEL-VIEW-PRESENTER

http://www.polymorphicpodcast.com/

click 'Shows'

click 'Design Patterns Bootcamp: Model View * Patterns*

view parts 1-5

You can use Google to get more information about this or find books.

MODEL-VIEW-PRESENTER

http://www.polymorphicpodcast.com/

click 'Shows'

click 'Design Patterns Bootcamp: Model View * Patterns*

view parts 1-5

You can use Google to get more information about this or find books.

You should also understand an object's Public accessor properties of
Get/Set
in C#.

Thanks for your detailed reply to my question. I've watched the podcasts
they are great. I get the point of splitting things down to make changes and
testing easier but I'm a little confused over persistence.

For example in my application (winform) after opening the main window a user
can choose to login to the application, at which point a popup opens asking
the user to login. Then I populate my User class with various authorisations
etc and use it for the remainder of the time the user is logged in. I'm not
sure how I would do this using the MVP model, where would my User class be
and how would it be referenced? Looking at the examples so far the (if i'm
understanding them correctly) each windows Form has reference to a
particular view class and the view class has reference to the business logic
classes. So on changing forms the instance of the User class would no be
visable.

This is all new to me so I may be missing something obvious, or just be
completely wrong in my understanding so far. :o)

Gav
Oct 29 '07 #4

"Gav" <ga*@nospam.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
>
"Mr. Arnold" <MR. Ar****@Arnold.comwrote in message
news:ed**************@TK2MSFTNGP02.phx.gbl...
>>
"Gav" <ga*@nospam.comwrote in message
news:%2****************@TK2MSFTNGP02.phx.gbl...
>>I'm writing a windows application (using C# VS 2005 Pro) to access a MS
SQL database and although it is working fine (up to now) I'm not sure
I'm going about it in the best way. Can anybody point me to any good
examples online that i can look at, found loads of web applications but
struggling to find a good windows application example.

If you abstract the form from the data access, then it shouldn't matter
what the form Web or Windows is being used. The form should be decoupled
from data access with SQL Server.

http://msdn.microsoft.com/msdnmag/is...taAccessLayer/
http://www.c-sharpcorner.com/UploadF...egant_dal.aspx

I am sure you can find other examples using Google about the DAL.

You might also want to look into the UI/Business layer/Data Access layer
concepts

The UI uses a business layer object to access the data access layer
object. The UI never makes a direct call to the DAL or no direct calls to
the database. It goes through the business object.

You can do an even more abstraction of the UI from all other layers by
using MVP concepts. No reference to the BL at all from the UP, the UI
goes through the presentation layer to the BL and BL to the DAL, using
interfaces. The UI should be unaware of the BL. You return all properties
of the BL object on the MVP interface. If you need to bind data from SQL
server to a control, then you use a DataTable as the return type through
the MVP interface, as an example from the BL/DAL objects. No BL object
and it's properties should ever be addressed at UI.

UI/MVP/BL/DAL.

MODEL-VIEW-PRESENTER

http://www.polymorphicpodcast.com/

click 'Shows'

click 'Design Patterns Bootcamp: Model View * Patterns*

view parts 1-5

You can use Google to get more information about this or find books.

MODEL-VIEW-PRESENTER

http://www.polymorphicpodcast.com/

click 'Shows'

click 'Design Patterns Bootcamp: Model View * Patterns*

view parts 1-5

You can use Google to get more information about this or find books.

You should also understand an object's Public accessor properties of
Get/Set
in C#.


Thanks for your detailed reply to my question. I've watched the podcasts
they are great. I get the point of splitting things down to make changes
and testing easier but I'm a little confused over persistence.

For example in my application (winform) after opening the main window a
user can choose to login to the application, at which point a popup opens
asking the user to login. Then I populate my User class with various
authorisations etc and use it for the remainder of the time the user is
logged in. I'm not sure how I would do this using the MVP model, where
would my User class be and how would it be referenced? Looking at the
examples so far the (if i'm understanding them correctly) each windows
Form has reference to a particular view class and the view class has
reference to the business logic classes. So on changing forms the instance
of the User class would no be visable.

This is all new to me so I may be missing something obvious, or just be
completely wrong in my understanding so far. :o)
Your User class is a Business object or object model that's actually at the
Business Layer. The UI should be unaware of the Business object. Your
solution should be loosely coupled in that regard. That means that there
should not be a reference to the Business layer if at all possible from the
UI layer. This is not a hard and study rule, but it is one that you should
follow as much as possible.

So with that said, you extract everything from the User class that is needed
and you bring like type fields back through the MVP Interface, string
UserName to Public Interface string.Username { set; }. You bring everything
back field by field.

Then at the UI at the UserName interface, you're going to use the Set value
and set (private string username) from the value of the returned Interface
field, as an example. You bring it all back through the MVP Interface field
by field.

Again, the UI should be unaware of a model object/Business object.

That Service Layer example is using a Business Object Reference and a <List>
to bind it to a control at the UI with a reference to the BL at the UI. But
you don't need that Service Layer, if you don't want to use it.

You can use a Dataset and DataTable and bring that DataTable back from the
DAL through the BL and through the MVP Interface as a DataTable back to the
UI and bind the DataTable to the control at the UI, with out the Service
layer. In this way, the UI still knows nothing about the BL or a model
object.
Oct 29 '07 #5

This demo about Login may help you too.

http://www.codeproject.com/useritems/mvpBasicDemo.asp
Oct 29 '07 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: BMM | last post by:
Hi. I have a dumb question. Is a database an application? And, in the context of a data-driven web-enabled application, is the database still an application? I have a project lead who says it is....
18
by: mountain man | last post by:
Greetings to all database professionals and laymen, Let us make a bold assumption that we have developed a software tool for the SQL Server environment which simply acts as an interface between...
9
by: Big Slim | last post by:
I'm working on a web application that makes heavy use of CSS, but I would like users to have a degree of control over some of the classes and attributes. To accomplish this, I want to store my CSS...
4
by: DevinG | last post by:
I would like to first start off saying that this is pretty much my first week of heavily getting into ASP.net. I previously have programmed in ASP Classic, and now understanding the benefits of...
0
by: mel_apiso | last post by:
Hi, after uncatalog one database, and catalog again with other name, if I try to connect with this database, everything is ok, but list applications only show me the connection with the...
16
by: Marcos de Lima Carlos | last post by:
Hi all, I have a VB aplicantion in many places. I need to manage databases over files on pen drive. What's the database i using to manage this program? My conditions is this: i have most...
6
by: Ted | last post by:
I am construvcting a number of databases, some of which contain sensitive data and most of which do not. I am attempting to handle the security issues involved in protecting sensitive data in part...
22
Frinavale
by: Frinavale | last post by:
How To Use A Database In Your Program Many .NET solutions are database driven and so many of us often wonder how to access the database. To help you understand the answer to this question I've...
12
by: nyathancha | last post by:
Hi, I have a question regarding best practices in database design. In a relational database, is it wise/necessary to sometimes create tables that are not related to other tables through a...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.