Download presentation
Presentation is loading. Please wait.
Published byMarilynn Ryan Modified over 8 years ago
1
1.Net programmingADO.NETNOEA / PQC 2009 12. ADO.NET Architecture Connection factory Config file DataReader DataSet DataGrid Autogeneration of SQL
2
2.Net programmingADO.NETNOEA / PQC 2009 Data access
3
3.Net programmingADO.NETNOEA / PQC 2009 Data Providers OLE DB: A COM object, that maps the OLE DB api to the DBMS' api Is Microsoft propritary. ODBC: Works similar to a printer driver undependent of DBMS and OS.NET Data provider: A set of classes that implements a set of interfaces and abstract classes Some are provided by Microsoft and are installed with the.Net framework. Others are written by the DBMS provider
4
4.Net programmingADO.NETNOEA / PQC 2009 Microsoft Data Providers Data Provider Namespace Assembly OLE DBSystem.Data.OleDbSystem.Data.dll Microsoft SQL ServerSystem.Data.SqlClientSystem.Data.dll Microsoft SQL Server MobileSystem.Data.SqlServerCeSystem.Data.SqlServerCe.dll ODBCSystem.Data.OdbcSystem.Data.dll OracleSystem.Data.OracleClientSystem.Data.OracleClient.dll
5
5.Net programmingADO.NETNOEA / PQC 2009 Other providers Data ProviderWebsite Firebird Interbase http://www.mono-project.com/Firebird_Interbase IBM DB2 Universal Databasehttp://www-306.ibm.com/software/data/db2 MySQLhttp://dev.mysql.com/downloads/connector/net/1.0.html PostgreSQLhttp://www.mono-project.com/PostgreSQL Sybasehttp://www.mono-project.com/Sybasehttp://www.mono-project.com/Sybase Oracle (deres egen)http://www.oracle.com/technology/tech/windows/odpnet/index.html
6
6.Net programmingADO.NETNOEA / PQC 2009 Classes and interfaces ObjectBase ClassImplemented Interfaces ConnectionDbConnectionIDbConnectionForbindelse CommandDbCommandIDbCommandSQL kommando DataReaderDbDataReaderIDataReaderForward reader DataAdapter DbDataAdapter IDataAdapterSammen med Dataset ParameterDbParameterIDataParameterParametre i kommando TransactionDbTransactionIDbTransactionEn transaktion
7
7.Net programmingADO.NETNOEA / PQC 2009 Overview of using databases 4 steps: 1.Open connection to database 2.Execute SQL for updating DB or fetching records 3.Handle data 4.Close connection
8
8.Net programmingADO.NETNOEA / PQC 2009 Step 1: Open Connection Connection are opened according to connection string info –here is a connection to a MS Access database opened –The database is located here: @"c:\AnyPlace\MyDb.mdb" –@ means that escape characters are discarded using System.Data; using System.Data.OleDb; string sConnection; sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="+@"c:\AnyPlace\MyDb.mdb"); OleDbConnection dbConn; dbConn = new OleDbConnection(sConnection); dbConn.Open(); connection
9
9.Net programmingADO.NETNOEA / PQC 2009 Step 2: Get / fetch data Data are fetched by creating a Command object and use it to execute a SQL statement. Data can be stored in either a DataReader object or a DataSet object.
10
10.Net programmingADO.NETNOEA / PQC 2009 Differences between DataReader and DataSet/DataAdapter DataReader can only be used for reading data. It can only be traversed once (forward). DataAdapter is the connection between DataSet and database. Data are fetched to the DataSet, might be modified and sent back to the database. Possible to traverse forward and backward. A DataSet can contain multible tables.
11
11.Net programmingADO.NETNOEA / PQC 2009 Step 2: Get records Method 1: DataSet Get records by SQL Select query and DataAdapter –Data can be read and changed string sql; sql = " Select lastname, firstname" + " From employee" + " Order By lastname Asc, firstname Asc;"; OleDbCommand dbCmd; dbCmd = new OleDbCommand(dbConn, sql); adapter.SelectCommand = dbCmd); dataset =new DataSet("MyTable"); adapter.Fill(dataset); dataset record
12
12.Net programmingADO.NETNOEA / PQC 2009 Step 2: Get records Method 2: DataReader Get records via SQL Select query –read-only access to the database string sql; sql = " Select lastname, firstname" + " From employee" + " Order By lastname Asc, firstname Asc;"; OleDbCommand dbCmd; dbCmd = new OleDbCommand(sql, dbConn); OleDbDataReader dbReader; dbReader = dbCmd.ExecuteReader(); data reader record
13
13.Net programmingADO.NETNOEA / PQC 2009 What is achieved? We have created a connection to a database. The connection is placed in the connection object. We have done a search by using a SQL-statement. The search was executed by using a command object. The result of the search was stored in a DataSet or as here a DataReader object. Now it is possible to get the data from this object for viewing, passing on to client or handle in other ways. The following example shows how it can be done in a aspx file.
14
14.Net programmingADO.NETNOEA / PQC 2009 DataGrid A simple example: Script kommer ind her....... <html Untitled Page
15
15.Net programmingADO.NETNOEA / PQC 2009 Datagrid (2) The script by using DataReader: OleDbDataReader data; protected void Page_Load(Object Src, EventArgs E) { String sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("firma.mdb"); //Step 1: Open connection OleDbConnection dbConn = new OleDbConnection(sConnection); dbConn.Open(); //Step 2: Get data OleDbCommand dbCom = new OleDbCommand("select * from employee", dbConn); data = dbCom.ExecuteReader(); MyDataGrid.DataSource = data; MyDataGrid.DataBind(); }
16
16.Net programmingADO.NETNOEA / PQC 2009 Datagrid (2) The script by using DataSet: OleDbDataReader data; protected void Page_Load(Object Src, EventArgs E) { String sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("firma.mdb"); //Step 1: Open connection OleDbConnection dbConn = new OleDbConnection(sConnection); dbConn.Open(); //Step 2: Get data OleDbCommand dbCom = new OleDbCommand("select * from employee", dbConn); OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.SelectCommand = dbCom; DataSet data = new DataSet(); adapter.Fill(data); MyDataGrid.DataSource = data; MyDataGrid.DataBind(); }
17
17.Net programmingADO.NETNOEA / PQC 2009 Factory Problem: Unlike ODBC, knowledge of the implementation might be spread to many places in the application. That's because of the set of dedicated classes The solution is to use a factory (from factory pattern) In ADO.NET 2.0, it is implemented in the framework. Otherwise you have to implement it yourself (see Troelsen). A coupIe of examples follows: 1.Which.Net providers are available 2.Use factory to create a Connection and a Command object
18
18.Net programmingADO.NETNOEA / PQC 2009 Which.NET data providers are installed? The information is collected from machine.config using System.Data; using System.Data.Common;..... DataTable dt = DbProviderFactories.GetFactoryClasses(); foreach (DataRow dr in dt.Rows) { Console.WriteLine("{0}\t\t{1}\t\t{2}", dr[0], dr[1],dr[2]); } Odbc Data Provider.Net Framework Data Provider for OdbcSystem.Data.Odbc OleDb Data Provider.Net Framework Data Provider for OleDbSystem.Data.OleDb OracleClient Data Provider.Net Framework Data Provider for OracleSystem.Data.OracleClient SqlClient Data Provider.Net Framework Data Provider for SqlServerSystem.Data.SqlClient
19
19.Net programmingADO.NETNOEA / PQC 2009 Use factory to create Connection and Command objects Here is no references in the source code to concrete classes provider and connectionString may be placed in the config file string provider = "System.Data.OleDb"; string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=firma.mdb"; DbProviderFactory factory= DbProviderFactories.GetFactory(provider); DbConnection conn=factory.CreateConnection(); conn.ConnectionString=connectionString; conn.Open(); Console.WriteLine(conn.State); DbCommand command = factory.CreateCommand(); command.CommandText = "SELECT * FROM employee"; command.Connection = conn; DbDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()){ Console.WriteLine(dataReader[1]); }
20
20.Net programmingADO.NETNOEA / PQC 2009 Connection strings Connection strings depends on the provider and are not well documented Where to get help? –www.connectionstrings.comwww.connectionstrings.com –www.carlprothman.net/Default.aspx?tabid=81www.carlprothman.net/Default.aspx?tabid=81 –Providers documentation Visual Studio can generate some of them
21
21.Net programmingADO.NETNOEA / PQC 2009.Config fil Configuration files are used several places in.Net i.e in ASP.NET for setting site properties and security In Remoting for setting remote object properties In ADO.NET to set provider and connection string You might also use own application dependent properties In a.Net application the config file should be called, i.e test.exe.config or test.dll.config If you call it app.config in Visual Studio, it automatically copied and renamed when the application is built. In ASP.NET it must be named web.config. You might define one in different sub folders, but the security part (authentification e.g.) must be in the root folder of the site.
22
22.Net programmingADO.NETNOEA / PQC 2009.config fil and ADO.NET Example of SQLExpress connection string: <add name="TestConnection" connectionString="Data Source=pcm06463\sqlexpress;Initial Catalog=dbtest; User ID=test;Password=" providerName="System.Data.SqlClient" /> Machine name Nessesary for sqlexpress Database Internal name
23
23.Net programmingADO.NETNOEA / PQC 2009 Get provider and connection string From ConfigurationManager:.... string provider = ConfigurationManager.ConnectionStrings["TestConnection"].ProviderName; string connStr = ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString;.....
24
24.Net programmingADO.NETNOEA / PQC 2009 A (nearly) complete example in ASP.NET protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string provider = ConfigurationManager.ConnectionStrings["TestConnection"].ProviderName; string connStr = ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString; DbProviderFactory factory = DbProviderFactories.GetFactory(provider); DbConnection conn = factory.CreateConnection(); conn.ConnectionString = connStr; conn.Open(); DbCommand command = factory.CreateCommand(); command.CommandText = "SELECT * FROM datotest"; command.Connection = conn; DataSet ds = new DataSet("TestDataSet"); DbDataAdapter da = factory.CreateDataAdapter(); da.SelectCommand = command; da.Fill(ds); MitGitter.DataSource = ds; MitGitter.DataBind(); }
25
25.Net programmingADO.NETNOEA / PQC 2009 The Aspx file
26
26.Net programmingADO.NETNOEA / PQC 2009 Parameters in SQL statements Makes it possible to use the same SQL-statement in multible situations. But harder to debug string sqlString = "INSERT INTO datotest Values (@dato)"; SqlParameter sqlParam = new SqlParameter("@dato", System.Data.SqlDbType.DateTime); sqlParam.Value = DateTime.Now; SqlCommand comm = _conn.CreateCommand(); comm.CommandText = sqlString; comm.Parameters.Add(sqlParam); int result = comm.ExecuteNonQuery(); ExecuteNonQuery is used for insert, delete and update
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.