Click here to Skip to main content
Licence 
First Posted 28 Jan 2004
Views 146,962
Bookmarked 47 times

SQLDataAdapter without using SQLCommandBuilder

By | 28 Jan 2004 | Article
This article speaks about how to use SQLDataAdapter and its update method without using SQLCommandBuilder

Introduction

This article talks about how to use SQLDataAdapter and its update method without using SQLCommandBuilder.

The code

The following code creates a database connection and then the data adapter for the connection; and then filling the data set using the adapter and binding the data grid with the data set. Now creating four command objects namely SelectCommand, InsertCommand, UpdateCommand, DeleteCommand for the data adapter.

There comes the important thing, closely look at the parameter added with the every command object. The add method of SQLParameterCollection accepts 4 parameter values. They are,

Parameter name, db type, size, and column name. so for every change in row state of data set, the update command is going to use the row to build the corresponding query and then updates the data source.

//Connecting database
con = new SqlConnection(
  "Data Source=mysource;Initial Catalog=mydbname;uid=sa");
//create sql adapter for the "emp" table
SqlDataAdapter sqlDa = new SqlDataAdapter("select * from emp", con);
//create dataset instance
DataSet    dSet = new DataSet();
//fill the dataset
sqlDa.Fill(dSet, "emp");
//bind the data grid with the data set
dataGrid1.DataSource=dSet.Tables["emp"];

//build select command
SqlCommand selCmd = new SqlCommand("select * from emp",con);
sqlDa.SelectCommand=selCmd;

//build insert command
SqlCommand insCmd = new SqlCommand(
  "insert into emp (Name, Age) values(@Name, @Age)",con);
insCmd.Parameters.Add("@Name", SqlDbType.NChar, 10, "Name");
insCmd.Parameters.Add("@Age", SqlDbType.Int, 4, "Age");
sqlDa.InsertCommand = insCmd;

//build update command
SqlCommand upCmd = new SqlCommand(
  "update emp set Name=@Name, Age=@Age where No=@No",con);
upCmd.Parameters.Add("@Name", SqlDbType.NChar, 10, "Name");
upCmd.Parameters.Add("@Age", SqlDbType.Int, 4, "Age");
upCmd.Parameters.Add("@No", SqlDbType.Int, 4, "No");
sqlDa.UpdateCommand = upCmd;

//build delete command
SqlCommand delCmd = new SqlCommand(
  "delete from emp where No=@No",con);
delCmd.Parameters.Add("@No", SqlDbType.Int, 4, "No");
sqlDa.DeleteCommand = delCmd;

//now update the data adapter with dataset.
sqlDa.Update(dSet,"emp");

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

vinoth1979

Web Developer

India India

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 1 PinmemberSaed Laghaee22:40 6 Apr '12  
GeneralMy vote of 5 PinmemberMohammadAli SJ4:38 1 Oct '10  
Generala problem with SqlDataAdapter and Update PinmemberMohammadAli SJ21:51 30 Sep '10  
GeneralMy vote of 1 PinmemberMember 16396735:10 3 Sep '09  
GeneralUpdate Failed............... Pinmemberrparbat1:04 18 Mar '09  
QuestionSQl command builder PinmemberMember 387282023:36 10 Oct '08  
GeneralOleDbCommandBuilder (Please help me) PinmemberHasanVaez4:30 1 Feb '08  
Dear friends,
 
I am going to update, delete and insert my data to Access data base via data grid:
 
Public Class Form1
Dim strDataBasePath As String = "\\hasan-pc\share\"
Dim strConDB As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDataBasePath & "m.mdb;"
Dim CON As New OleDb.OleDbConnection(strConDB)
Dim CMD As New OleDb.OleDbCommand("SELECT * FROM table1", CON)
Dim ADP As New OleDb.OleDbDataAdapter(CMD)
Dim CMDB As New OleDb.OleDbCommandBuilder(ADP)
Dim DTABLE As New DataTable
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CON.Open()
ADP.Fill(DTABLE)
G.DataSource = DTABLE
End Sub
 
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ADP.InsertCommand = CMDB.GetInsertCommand
ADP.DeleteCommand = CMDB.GetDeleteCommand
ADP.UpdateCommand = CMDB.GetUpdateCommand
ADP.Update(DTABLE)
End Sub
End Class
 
I succeed if insert a record, but I got Failed when I am going to delete or update a record.
I got this error:
"Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information."
 
or
 
"Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information."
 
Please help me what should I do. Cry | :((
 
hasanvaez@gmail.com
 
hasan

AnswerRe: OleDbCommandBuilder (Please help me) PinmemberMember 387282023:34 10 Oct '08  
GeneralTo those who say : boring & nothing new Pinmemberplatus20000:56 15 Jan '06  
GeneralRe: To those who say : boring & nothing new Pinmemberharryjo2:25 9 Feb '06  
GeneralCan't Update The DataBase Pinmemberboaz2582:09 23 Jun '05  
GeneralRe: Can't Update The DataBase PinmemberHasanVaez4:37 1 Feb '08  
QuestionWhat am I missing ? PinsussBarneaGal21:04 28 Jan '04  
AnswerRe: What am I missing ? Pinmembervinoth197921:27 28 Jan '04  
GeneralRe: What am I missing ? PinmemberMember 359322320:23 8 Jun '08  
Answermsdn article on this topic Pinmembervinoth197923:23 28 Jan '04  
GeneralBoring! Pinmemberdog_spawn8:42 29 Jan '04  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120529.1 | Last Updated 29 Jan 2004
Article Copyright 2004 by vinoth1979
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid