CIS 451: Using ASP.NET Objects with SQL Dr. Ralph D. Westfall February, 2009
ASP.NET Database Capabilities ASP.NET objects offer multiple ways to access data in databases has a number of objects, with numerous properties, that can be used to open and get data from different types of data sources ASP.NET uses SQL in different ways with some of these objects
ASP.NET Database Objects can use the following objects don't always have to create all of them some are created when create others Connection: to database Command: SQL code or other command DataAdapter: bridge between the database and the application DataSet: holds data DataView: more flexible than DataSet
Set Up ASP.NET for a Database need the following lines at the top of an.aspx file to make database capabilities accessible or use Imports statement in aspx.vb file 'Microsoft Access and/or SQL Server 'Sub Page_Load … … … … … … … … … End Sub
Connection Object creating in code (prodtestbuild.aspx)prodtestbuild.aspx semicolons in the "connection string" separate parameters (driver; path; etc.) Dim strCon as String strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" strCon += "Data Source=" & _ "\example.mdb"example.mdb assumes database is in project's \bin subdirectory
Connection Object - 2 opening Dim objCon = New _ OledbConnection(strCon) 'previous pg. objCon.Open() closing objCon.Close() 'to free memory after database is used
Command Object has following properties to use with it Connection – to database or etc. CommandType can be Text (default): SQL string, procedure name … TableDirect: name of a table StoredProcedure: name inside a database CommandText SQL string, SQL stored procedure name, etc.
Creating a Command Object 'for a Microsoft Access database Dim strSQL as String Dim objCommand as OleDbCommand Dim strCity as String objCommand = New OleDbCommand(strSQL, _ objCon) 'slide 6 strSQL = "select * from Customer " 'space 'for a SQLServer database, would use SqlCommand( … instead of OleDbCommand( …
Variables in SQL for Command can limit output by using variables as conditions strCity = "Colusa" " where City <> '" & strCity & "'; " 'note space before where 'also single quotes inside quotes 'single quotes identify string data 'in SQL
DataReader Object high speed, read only, forward only connection between database and application Dim objDataRead as OleDbDataReader objCon.Open() objDataRead = objCommand.ExecuteReader()
Getting Data from DataReader reads forward one row at a time each read also returns a Boolean value row fields are identified by field names Dim strCity as String 'objDataRead below is from slide 10 Do While objDataRead.Read() ' = True strCity = ObjDataRead("City") Response.Write(strCity & " ") Loop 'until objDataRead.Read() = False
DataAdapter Object transfers data from database to an application into a DataSet object that holds the data in the application Dim objDA as OleDbDataAdapter 'strSQL = "select * from Product " 'if not above, Connection object code here objDA = New OleDbDataAdapter(strSQL, objCon)
DataSet Object holds data retrieved from database disconnected: changes do not go directly back into database inflexible e.g., can't sort contents can be bound to a control e.g., DataGrid Dim objDS as DataSet objDS = New DataSet()
DataSet Object - 2 objDA.SelectCommand = new _ OleDbCommand(strSQL, objCon) objDA.Fill(objDS, "Product")
DataTable & DataRow Objects Dim intProdCount as Integer Dim objTable as DataTable Dim objRow as DataRow objTable = objDS.Tables("Product") objRow = objTable.Rows(0) 'or variable intProdCount = objRow("InStock") 'add.ToString on end of line if errors
CommandBuilder Object sets up SQL commands so that they run on Microsoft Access or on other sources avoids problems when trying to use SQL commands directly against specific data sources Dim objBuild as OleDbCommandBuilder objBuild = New OleDbCommandBuilder(objDA)
CommandBuilder Object - 2 updating (select, insert, delete similar) objDA.UpdateCommand = _ objBuild.GetUpdateCommand() intProdSold = 1 intProdCount = intProdCount - intProdSold objRow("Instock") = intProdCount objDA.Update(objDS, "Product") 'code
DataView Object can be bound to a control in the output Dim objDV as DataView objDV = New _ DataView(objDS.Tables("Product"))
Binding to Database Data can hook GridView data to a DataView to show output in the browser GridView replaced DatGrid in VS.NET 2005 gvProd.DataSource = objDV 'in a Sub gvProd.DataBind()
Exercise: Use GridView create some code in Visual Studio and use a DataGrid to output data from a database table onto a web page