coding ado.net objects: connection, command, datareader
DESCRIPTION
Coding ADO.NET Objects: Connection, Command, DataReader. A Simplified View of ADO.Net Objects. Ado.Net. Data Provider. Data Consumer. Adapter. Dataset. WinForm. SQL Updates. Connection. Command. WebForm. Results of SQL Selects. Reader. Connection with a Connection Object. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/1.jpg)
Coding ADO.NET Objects:Connection, Command, DataReader
![Page 2: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/2.jpg)
A Simplified View of ADO.Net Objects
Ado.Net
Data Provider
Connection
Adapter
Command
Reader
DatasetData Consumer
WinForm
WebForm
SQL Updates
Results of SQL Selects
![Page 3: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/3.jpg)
Connection with a Connection Object
• A connection object represents a unique session with a data source.
• Property:– Connection string: string used to open a database.
• Data source, OLE DB provider, password, if any, security, etc.
• Methods:– Use the Open/Close method to open/close a
connection.
![Page 4: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/4.jpg)
Connection String
• Containing information about database, OLE DB provider, password, if any, security, etc.
• For Jet database:– ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\salesDB.mdb“
• For Access 2007, 2011:– = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\SalesDB2011.accdb“
• For SQL Server Express– "Data Source=David-PC\sqlexpress;Initial Catalog=testSQL08;Integrated
Security=True"
![Page 5: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/5.jpg)
Connection Object• Example 1 – Jet Database:
– string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\\salesDB.mdb";
– OleDbConnection objConn = new OleDbConnection(strConn);– objConn.Open();
• Example 2 – Access 2011:– string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\\SalesDB2011.accdb";– OleDbConnection objConn = new OleDbConnection(strConn);– objConn.Open();
• Object Browser: System.Data.OleDB/oledbConnection/New
• Basic Methods:– Open, Close– BeginTransaction
![Page 6: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/6.jpg)
Command Object• The command object allows us to execute a SQL statement.• Properties:
– CommandType: Text, stored procedure, tableDirect– CommandText: SQL statement, procedure name, table name– Connection– Other properties:
• Parameters
• Basic Methods:– ExecuteReader: Creates a DataReader object that contains the results
of the query.– ExecuteScalar: Executes the query, and returns the first column of the
first row in the result set returned by the query. Typically used to execute a SQL aggregate function such as SUM, MAX, MIN, etc.
– ExecuteNonQuery: Change the data in a database without using a DataSet by executing SQL’s UPDATE, INSERT, or DELETE statements.
![Page 7: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/7.jpg)
DataReader Object
• It is read-only and forward-only cursor.• Basic Methods:
– Read: Reads the current record and advances the pointer to the next record. It returns False if no more record in the DataReader.
– Close: Closes the dataReader.
• Property:– HasRows – Boolean, indicates whether this
System.Data.Common.DbDataReader contains one or more rows.
![Page 8: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/8.jpg)
ExecuteReader Examplestring strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
objConn.Open();
string strSQL = "select * from customer;";
OleDbCommand objComm = new OleDbCommand(strSQL,objConn);
OleDbDataReader objDataReader;
objDataReader = objComm.ExecuteReader();
if (objDataReader.HasRows)
{
MessageBox.Show("Data reader contains rows");
}
else
{
MessageBox.Show("No row reurns");
}
Note: No NEW in the Dim statement when define a dataReader object.
![Page 9: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/9.jpg)
Import NameSpace
• The “using” statement must appear before all other declarations in a file and cannot appear inside a class or module declaration.– using System.Data.OleDb;
![Page 10: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/10.jpg)
Read Records in a DataReader
• string Results="";• while (objDataReader.Read()==true)• {• Results+=objDataReader["cid"] + " " +
objDataReader["Cname"] + Environment.NewLine;• }• textBox1.Text = Results.ToString();
• Note: Use index to read a column - objDataReader[0]• Note: The Read method will (1) read a record, (2) advance
pointer, (3) return true/false to indicate if more records exist.
![Page 11: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/11.jpg)
DataReader Examplestring strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";OleDbConnection objConn = new OleDbConnection(strConn);objConn.Open(); string strSQL = "select * from customer;";OleDbCommand objComm = new OleDbCommand(strSQL,objConn);OleDbDataReader objDataReader;objDataReader = objComm.ExecuteReader();string Results="";while (objDataReader.Read()==true){ Results += objDataReader["cid"] + " " + objDataReader["Cname"] + Environment.NewLine;}textBox1.Text = Results.ToString();
![Page 12: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/12.jpg)
Add Items from a DataReader to a Listbox string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL = "select cid from customer;";
OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
objConn.Open();
OleDbDataReader objDataReader;
objDataReader=objComm.ExecuteReader();
while (objDataReader.Read()==true)
{
listBox1.Items.Add(objDataReader["cid"]);
// listBox1.Items.Add(objDataReader.GetString(0));
}
Note1: Listbox is not bound. 2. SelectedItem
![Page 13: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/13.jpg)
Display Selected Customer Info in Textbox
private void listBox1_SelectedIndexChanged(object sender, EventArgs e){ string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer where cid='" + listBox1.SelectedItem + "'"; OleDbCommand objComm = new OleDbCommand(strSQL, objConn); objConn.Open(); OleDbDataReader objDataReader; objDataReader = objComm.ExecuteReader(); objDataReader.Read(); textBox1.Text = objDataReader["Cname"].ToString(); textBox2.Text = objDataReader["rating"].ToString(); objConn.Close(); }
![Page 14: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/14.jpg)
Using a Parallel ArrayList to Store Cname and Rating
• ArrayList– Add– Clear– Remove– IndexOf
• Must add this reference:– using System.Collections;
![Page 15: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/15.jpg)
Using a Parallel ArrayListArrayList CnameList = new ArrayList(),RatingList = new ArrayList();private void Form1_Load(object sender, EventArgs e) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer;"; OleDbCommand objComm = new OleDbCommand(strSQL, objConn); objConn.Open(); OleDbDataReader objDataReader; objDataReader = objComm.ExecuteReader(); while (objDataReader.Read() == true) { listBox1.Items.Add(objDataReader["cid"]); CnameList.Add(objDataReader["cname"]); RatingList.Add(objDataReader["rating"]); } objConn.Close(); }
![Page 16: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/16.jpg)
Use Listbox SelectedIndex
private void listBox1_SelectedIndexChanged(object sender, EventArgs e){ textBox1.Text = CnameList[listBox1.SelectedIndex].ToString(); textBox2.Text = RatingList[listBox1.SelectedIndex].ToString();}
![Page 17: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/17.jpg)
Use SQL to Retrieve Summaries string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL = "select count(cid) as custCount from customer;";
OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
objConn.Open();
OleDbDataReader objDataReader;
objDataReader = objComm.ExecuteReader();
if (objDataReader.Read() == true)
{
MessageBox.Show(objDataReader["custCount"].ToString());
}
objConn.Close();
Note: Alias ----- select count(cid) as custCount
![Page 18: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/18.jpg)
Using Command’s ExecuteScalar to Run SQL Aggregates
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";OleDbConnection objConn = new OleDbConnection(strConn);string strSQL = "select count(cid) as custCount from customer;";OleDbCommand objComm = new OleDbCommand(strSQL, objConn);objConn.Open();textBox1.Text = objComm.ExecuteScalar().ToString();objConn.Close();
![Page 19: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/19.jpg)
ExecuteScalar Exampleprivate void radioButton_CheckedChanged(object sender, EventArgs e) { string strSQL; if (radioButton1.Checked) { strSQL = "select count(pid) as prodCount from product;"; } else if (radioButton2.Checked) { strSQL = "select max(price) as maxPrice from product;"; } else { strSQL = "select min(price) as minPrice from product;"; } string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); OleDbCommand objComm = new OleDbCommand(strSQL, objConn); objConn.Open(); textBox1.Text = objComm.ExecuteScalar().ToString(); objConn.Close(); }
![Page 20: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/20.jpg)
Testing for Null:DBNull.Value
if ( objDataReader["rating"]==DBNull.Value)
{
textBox2.Text = "NA";
}
else
{
textBox2.Text = objDataReader["rating"].ToString();
}
![Page 21: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/21.jpg)
Error Handlingstring strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL = "select cid from customer;";
OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
try
{
objConn.Open();
OleDbDataReader objDataReader;
objDataReader = objComm.ExecuteReader();
while (objDataReader.Read() == true)
{
listBox1.Items.Add(objDataReader["cid"]);
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
objConn.Close();
Note: Where do declare objConn?
![Page 22: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/22.jpg)
Command Object’s ExecuteNonQuery Method
• To run SQL:– Insert– Delete– Update
• The ExecuteNonQuery method also returns a value indicating the number of records affected by the SQL statement.
![Page 23: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/23.jpg)
Use ExecuteNonQuery to Insert A New RecordCreate unbound text boxes to enter new customer record.
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQLInsert;
strSQLInsert = "Insert into Customer values ('";
strSQLInsert += textBox1.Text + "','" + textBox2.Text + "','";
strSQLInsert += textBox3.Text + "','" + textBox4.Text + "')";
OleDbCommand objCommInsert= new OleDbCommand(strSQLInsert, objConn);
objConn.Open();
MessageBox.Show(strSQLInsert.ToString());
try
{
objCommInsert.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
objConn.Close();
![Page 24: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/24.jpg)
Use ExecuteNonQuery to Delete A New Record1. Create a listbox with CIDs
2. Delete the selected record and remove the CID from the listbox.
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL = "delete from customer where cid = '" + listBox1.SelectedItem + "'";
OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
try
{
int affectedRecords;
objConn.Open();
affectedRecords= objComm.ExecuteNonQuery();
MessageBox.Show(affectedRecords.ToString() + "records deleted");
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
objConn.Close();
![Page 25: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/25.jpg)
Use ExecuteNonQuery to Update A New Record
• Create a project that do the following tasks:– Use a DataReader to retrieve customer IDs and
populate a listbox.– Select a new rating from radio buttons for the
selected customer.– Update customer’s rating using the
ExecuteNonQuery method of a Command object.
![Page 26: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/26.jpg)
create CID listbox:private void Form4_Load(object sender, EventArgs e)
{
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL = "select cid from customer;";
OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
try
{
objConn.Open();
OleDbDataReader objDataReader;
objDataReader = objComm.ExecuteReader();
while (objDataReader.Read() == true)
{
listBox1.Items.Add(objDataReader["cid"]);
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
objConn.Close();
}
![Page 27: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/27.jpg)
Update customer rating:private void button1_Click(object sender, EventArgs e)
{
string newRating;
if (radioButton1.Checked)
{
newRating = "A";
}
else if (radioButton2.Checked)
{
newRating = "B";
}
else
{
newRating = "C";
}
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SalesDB2011.accdb";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL = "Update customer set rating = '" + newRating + "' where cid='" + listBox1.SelectedItem + "'";
OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
try
{
objConn.Open();
objComm.ExecuteNonQuery();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
objConn.Close();
}
![Page 28: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/28.jpg)
Working with ODBC Data Source
• Enter: using System.Data.Odbc;
• Use:– OdbcConnection: Use DSN
• Example of connection string:– string strConn = "DSN=test32SQLDS";
– OdbcCommand– OdbcDataReader
![Page 29: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/29.jpg)
using System.Data.Odbc;private void Form5_Load(object sender, EventArgs e) { string strConn = "DSN=test32SQLDS"; OdbcConnection objConn = new OdbcConnection(strConn); string strSQL = "select cid from customer;"; OdbcCommand objComm = new OdbcCommand(strSQL, objConn); try { objConn.Open(); OdbcDataReader objDataReader; objDataReader = objComm.ExecuteReader(); while (objDataReader.Read() == true) { listBox1.Items.Add(objDataReader["cid"]); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } objConn.Close(); }
![Page 30: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/30.jpg)
Possible Database Errors
• SQL syntax errors
• Database connection not open
• Null
• Violate database constraints• Referential integrity
• Field data type and length
• Primary key constraint
• Invalid data – database may have validation rules.
![Page 31: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/31.jpg)
Setting a Field to Null with a Update Statement
string strSQL = "Update customer set city = null where cid='" + listBox1.SelectedItem + "'";
![Page 32: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/32.jpg)
Working with SQL Server Database
• Enter: using System.Data.SqlClient;
• Use:– SqlConnection: – Example of connection string:
– string strConn = "Data Source=David-PC\\SQLEXPRESS;Initial Catalog=TestSQLServer;Integrated Security=True;Pooling=False";
– SqlCommand– SqlDataReader
![Page 33: Coding ADO.NET Objects: Connection, Command, DataReader](https://reader036.vdocuments.mx/reader036/viewer/2022062321/56813d1f550346895da6dd5a/html5/thumbnails/33.jpg)
Working with SQL Server Data Sourceprivate void Form5_Load(object sender, EventArgs e) { string strConn = "Data Source=David-PC\\SQLEXPRESS;Initial Catalog=TestSQLServer;Integrated Security=True;Pooling=False"; SqlConnection objConn = new SqlConnection(strConn); string strSQL = "select cid from customer;"; SqlCommand objComm = new SqlCommand(strSQL, objConn); try { objConn.Open(); SqlDataReader objDataReader; objDataReader = objComm.ExecuteReader(); while (objDataReader.Read() == true) { listBox1.Items.Add(objDataReader["cid"]); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } objConn.Close(); }