Objective
To develop a Windows application using C#.Net to insert, search, and update records from M.S.Excel-2003 file using OleDb Connection.
Design

Design the form as above with a DataGridView,3 Labels, 3 TextBoxes, and 9 buttons.
Introduction
As we want to use OleDb Connection include the namespace:'usingSystem.Data.OleDb'
For accessing records from the M.S.Excel-2003 file, we use the 'Jet' driver.
In this application, we will search a record by taking input from the InputBox. For this, we have to add a reference to Microsoft.VisualBasic.
Adding reference to Microsoft.VisualBasic
- Goto Project Menu->Add Reference -> select 'Microsoft.VisualBasic' from the .NET tab.
- To use this we have to include the namespace:'usingMicrosoft.VisualBasic'.
Creating a primary key in the data table
In this app., we use the Find() method to search a record, which requires details of the primary-key column. Database tables are provided using the statement.
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
However since we don't have any primary key column in the M.S. Excel table, we have to create a primary key column in the data table.
Eg
ds.Tables[0].Constraints.Add("pk_sno", ds.Tables[0].Columns[0], true);
Pointing to the current record in Table
After searching for a record, we have to get the index of that record so that we can navigate the next and previous records.
Eg
rno = ds.Tables[0].Rows.IndexOf(drow);
Code
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using Microsoft.VisualBasic;
namespace xloledb03
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
OleDbConnection con;
OleDbCommand cmd;
OleDbDataAdapter da;
DataSet ds;
int rno = 0;
private void Form1_Load(object sender, EventArgs e)
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.Oledb.4.0;data source=E:\prash\xldb.xls;Extended Properties=""Excel 8.0;HDR=Yes;"" ");
loaddata();
showdata();
}
void loaddata()
{
da = new OleDbDataAdapter("select * from [student$]", con);
ds = new DataSet();
da.Fill(ds, "student");
ds.Tables[0].Constraints.Add("pk_sno", ds.Tables[0].Columns[0], true);
dataGridView1.DataSource = ds.Tables[0];
}
void showdata()
{
textBox1.Text = ds.Tables[0].Rows[rno][0].ToString();
textBox2.Text = ds.Tables[0].Rows[rno][1].ToString();
textBox3.Text = ds.Tables[0].Rows[rno][2].ToString();
}
private void btnInsert_Click(object sender, EventArgs e)
{
cmd = new OleDbCommand("insert into [student$] values(" + textBox1.Text + ",' " + textBox2.Text + " ',' " + textBox3.Text + " ')", con);
con.Open();
int n = cmd.ExecuteNonQuery();
con.Close();
if (n > 0)
{
MessageBox.Show("record inserted");
loaddata();
}
else
MessageBox.Show("insertion failed");
}
private void btnSearch_Click(object sender, EventArgs e)
{
int n = Convert.ToInt32(Interaction.InputBox("Enter sno:", "Search", "20", 200, 200));
DataRow drow = ds.Tables[0].Rows.Find(n);
if (drow != null)
{
textBox1.Text = drow[0].ToString();
textBox2.Text = drow[1].ToString();
textBox3.Text = drow[2].ToString();
}
else
MessageBox.Show("Record not found");
}
private void btnUpdate_Click(object sender, EventArgs e)
{
cmd = new OleDbCommand(" update [student$] set sname='" + textBox2.Text + "',course='" + textBox3.Text + "' where sno=" + textBox1.Text + " ", con);
con.Open();
int n = cmd.ExecuteNonQuery();
con.Close();
if (n > 0)
{
MessageBox.Show("Record Updated");
loaddata();
}
else
MessageBox.Show("Update failed");
}
private void btnFirst_Click(object sender, EventArgs e)
{
if (ds.Tables[0].Rows.Count > 0)
{
rno = 0;
showdata();
MessageBox.Show("First Record");
}
else
MessageBox.Show("no records");
}
private void btnPrevious_Click(object sender, EventArgs e)
{
if (ds.Tables[0].Rows.Count > 0)
{
if (rno > 0)
{
rno--;
showdata();
}
else
MessageBox.Show("First Record");
}
else
MessageBox.Show("no records");
}
private void btnNext_Click(object sender, EventArgs e)
{
if (ds.Tables[0].Rows.Count > 0)
{
if (rno < ds.Tables[0].Rows.Count - 1)
{
rno++;
showdata();
}
else
MessageBox.Show("Last Record");
}
else
MessageBox.Show("no records");
}
private void btnLast_Click(object sender, EventArgs e)
{
if (ds.Tables[0].Rows.Count > 0)
{
rno = ds.Tables[0].Rows.Count - 1;
showdata();
MessageBox.Show("Last Record");
}
else
MessageBox.Show("no records");
}
private void btnClear_Click(object sender, EventArgs e)
{
textBox1.Text = textBox2.Text = textBox3.Text = "";
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Note. The 'xldb.xls' file is provided in the xloledb03.zip file along with the source code.

ali ahmadiPosted Aug 22, 2013, 9:36 AM
thx
KRISHNA KANTPosted Mar 19, 2012, 3:06 PM
Awesome content...which will be really benificial.
parth khatwaniPosted Jan 26, 2012, 11:34 AM
hey prashanth i want some more examples with oledb and in c# not in VB
Abdul Baseer YousofzaPosted Nov 1, 2011, 4:52 AM
Thanks bhai for uploading such use full information , i want to do the same thing in C# Web application would you please guide how to retrieve the image in grid and when some one clicks the image it enlarges Automatically to its original size. here is my email address if you could help me doing this the stored images are in binary format. [email protected]
Mahesh ChandPosted Oct 30, 2010, 1:10 PM
Agreed with other two guys!
Sivaraman DhamodaranPosted Oct 29, 2010, 3:51 AM
Good Article Prashanth. I know connecting to database like SQL server, Oracle and MS Access. This one is useful for developing application for our personal use as the datastore is Excel