ASP Beginning

Download Report

Transcript ASP Beginning

CSCI 6962:
Server-side Design and Programming
Database Manipulation
in ASP
Outline
•
•
•
•
•
•
•
Adding a database to an ASP project
The SqlDataSource object
Linking GridView components to a database
Binding queries to visual components
Reading query results
Programmatic database access
Optimistic concurrency
Access Database
• Simplest idea: Use Access database inside MS
database server built into Visual Studio
Adding a Database to a Project
• Add to App_Data subfolder of project
– Create if necessary
– Copy database into that folder
– Load into solution explorer using Add  Existing Item
SQLDataSource Object
• Control representing database connection
– Can set up as part of GridView (like ObjectDataSource)
– Can load separately from Data toolbox to create
connection without specific visual tool
GridViews and SQLDataSource
• Create GridView
• Choose new data source
• Choose SqlDataSource
GridViews and SQLDataSource
• In connection string
window choose
“new connection”
• Browse to the
database
• Set user name,
password if necessary
• Good idea to
test connection
Creating Connection
• Choose Microsoft Access DatabaseFile
Creating Connection
• Can browse for database file (easier if already in App_Data)
• Can set name/password for connection if password protected
Creating Connection
• Added to list of connection strings
• Can save in web.config for use by other pages
SqlDataSource Properties
• SqlDataSource control has properties
– SQL statements used for queries
– SQL statements used for updates (insert, delete, etc.)
– Can also set at any time in its properties
GridViews and Databases
• Table automatically populated from database
– Can edit columns to display in desired format
Forms and Databases
• Example:
Separate form to update price of widget in database
Forms and Databases
• Add SqlDataSource to page
– Drag from toolbox
– Configure as before
– If have existing connection in web.config, can choose it
from menu
Binding Queries to Controls
• Must use values entered in form elements to create
the query/update statement
– update Widget set price = priceBox.Text
where ID = IDBox.Text
• Modify specific query
type in properties menu
Binding Queries to Controls
• Enter query into Command and Parameter editor
– Table and field names in [ ]
– ? where field values will be inserted
Executing Updates
• Can execute update in code behind by calling method
– Might then transfer to another page
• Syntax: SqlDataSourceObject.TypeOfQuery()
– Type of query: Select(), Update(), Delete()
Reading Query Results
•
•
•
•
Will sometimes need code to manipulate results of query
Reading one line at a time
Determining whether any results exist
Example: Validating widget with given ID exists in database
– Add query to SQLDataSource object for SELECT
Reading Query Results
• Manually invoke Select method of SqlSource object
– Use Empty object as parameter to use query set in object
– Cast Enumerable object returned to some container object
(such as DataView)
Reading Query Results
• Good tool for accessing results: DataView object
–
–
–
–
DataViewObject.Table.Rows = rows of results
DataViewObject.Table.Rows.Count = number of results
DataViewObject.Table.Rows[i] = ith result
DataViewObject.Table.Rows[i][ field] = value in field field
in ith result
Programmatic Database Access
• May need to construct query dynamically
– Example: When user selects product, need to create SELECT
query from ID in CommandArguments
• Must set SelectCommand property of SqlDataSource to
desired SQL
– Often set up separate SqlDataSource
for this specific purpose
Programmatic Database Access
• Can retrieve results of query in terms of rows and
fields in those rows
– Extract Description and Price fields from row 0 of results
(first and only row), converting to proper types
– Pass to Widget constructor to add new Widget to cart
Optimistic Concurrency
• Multiple processes may attempt to simultaneously access
same record, causing concurrency problems
• ASP allows use of optimistic concurrency on updates
– Keeps track of field values at start of update
– Compares to field values at point update committed
– If not same, record has
been changed by another
process
– Do not do update if that
is the case