Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. General Programming
  3. C#
  4. Update() database from DataSet

Update() database from DataSet

Scheduled Pinned Locked Moved C#
databasehelpquestionannouncement
21 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Paul Conrad

    aecordoba wrote:

    usersRows = ContactsDataSet.Users.Select("UserName = '" + userName + "'");

    OT: This is dangerous for sql injection attacks...

    P Offline
    P Offline
    PIEBALDconsult
    wrote on last edited by
    #5

    Don't assume the value came from an untrusted source.

    P 1 Reply Last reply
    0
    • P PIEBALDconsult

      Don't assume the value came from an untrusted source.

      P Offline
      P Offline
      Paul Conrad
      wrote on last edited by
      #6

      PIEBALDconsult wrote:

      Don't assume the value came from an untrusted source.

      It's safer to assume it is untrusted...

      P 1 Reply Last reply
      0
      • P Paul Conrad

        PIEBALDconsult wrote:

        Don't assume the value came from an untrusted source.

        It's safer to assume it is untrusted...

        P Offline
        P Offline
        PIEBALDconsult
        wrote on last edited by
        #7

        No it isn't.

        P D 2 Replies Last reply
        0
        • P PIEBALDconsult

          No it isn't.

          P Offline
          P Offline
          Paul Conrad
          wrote on last edited by
          #8

          PIEBALDconsult wrote:

          No it isn't.

          Why not? There are plenty of idiots out there...

          1 Reply Last reply
          0
          • G Giorgi Dalakishvili

            First: make sure that the rows are really deleted from the datatable. Second: What is the deletecommand for the dataadapter?

            A Offline
            A Offline
            aecordoba
            wrote on last edited by
            #9

            The DeleteCommand was automaticaly generated by Visual Studio 2005. I think the problem is the Deleted status of the rows is in DataSet. I'm sorry. I'm newbie.

            -- Adrián Córdoba

            1 Reply Last reply
            0
            • P Paul Conrad

              aecordoba wrote:

              usersRows = ContactsDataSet.Users.Select("UserName = '" + userName + "'");

              OT: This is dangerous for sql injection attacks...

              A Offline
              A Offline
              aecordoba
              wrote on last edited by
              #10

              Can you tell me how can I select the rows to delete? I'm sorry. I'm newbie.

              -- Adrián Córdoba

              1 Reply Last reply
              0
              • P PIEBALDconsult

                You need to set the Commands.

                A Offline
                A Offline
                aecordoba
                wrote on last edited by
                #11

                The commands were automaticaly generated by Visual Studio 2005 in the moment of insert the DataSet.

                -- Adrián Córdoba

                P 1 Reply Last reply
                0
                • A aecordoba

                  The commands were automaticaly generated by Visual Studio 2005 in the moment of insert the DataSet.

                  -- Adrián Córdoba

                  P Offline
                  P Offline
                  PIEBALDconsult
                  wrote on last edited by
                  #12

                  But they're in the original TableAdapter. When you do DataSetTableAdapters.UsersTableAdapter usersTableAdapter = new DataSetTableAdapters.UsersTableAdapter(); you instantiate a new/uninitialized TableAdapter.

                  1 Reply Last reply
                  0
                  • P PIEBALDconsult

                    No it isn't.

                    D Offline
                    D Offline
                    Dave Kreskowiak
                    wrote on last edited by
                    #13

                    It's never a good idea to trust ANY data comming into your app, even if it IS from a trusted source. The data can be corrupted by the time it reaches your validation code.

                    Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                         2006, 2007

                    P 1 Reply Last reply
                    0
                    • A aecordoba

                      Hi, there! I can't Update a table in database after a row is deleted in DataSet. I delete a row, as following: DataRow[] usersRows; usersRows = ContactsDataSet.Users.Select("UserName = '" + userName + "'"); foreach (DataRow userRow in usersRows) userRow.Delete(); and I tried to update the database: DataSetTableAdapters.UsersTableAdapter usersTableAdapter = new DataSetTableAdapters.UsersTableAdapter(); usersTableAdapter.Update(contactsDataSet.Users); But the data aren't updated. Can someone help me? Thank you in advance.

                      -- Adrián Córdoba

                      D Offline
                      D Offline
                      DarthDub
                      wrote on last edited by
                      #14

                      First off do you have your update command made yet? I'll I know how to do with DataAdapters is the sql part of them, but if thats what your doing here is an example. It should be kinda the same type of thing. SqlConnection CNN = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=true"); SqlDataAdapter DA = new SqlDataAdapter(); DataSet DS = new DataSet(); SqlCommand cmdSelect = CNN.CreateCommand(); cmdSelect.CommandText = "Select CustomerID, ContactName, CompanyName From Customers"; // create an Update command SqlCommand cmdUpdate = CNN.CreateCommand(); cmdUpdate.CommandText = "Update Customers SET CompanyName=@CompanyName, ContactName=@ContactName WHERE CustomerID=@CustomerID"; cmdUpdate.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName"); cmdUpdate.Parameters.Add("@ContactName", SqlDbType.NVarChar, 30, "ContactName"); cmdUpdate.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID"); cmdUpdate.Parameters["@CustomerID"].SourceVersion = DataRowVersion.Original; // create an Insert command SqlCommand cmdInsert = CNN.CreateCommand(); cmdInsert.CommandText = "Insert into customers (customerid, companyname, contactname) Values (@customerid, @companyname, @contactname)"; cmdInsert.Parameters.Add("@customerid", SqlDbType.NChar, 5, "customerid"); cmdInsert.Parameters.Add("@companyname", SqlDbType.NVarChar, 40, "companyname"); cmdInsert.Parameters.Add("@contactname", SqlDbType.NVarChar, 30, "contactname"); cmdInsert.Parameters["@customerid"].SourceVersion = DataRowVersion.Original; // create a Delete command SqlCommand cmdDelete = CNN.CreateCommand(); cmdDelete.CommandText = "Delete from customers Where customerid = @customerid"; cmdDelete.Parameters.Add("@customerid", SqlDbType.NChar, 5, "customerid"); cmdDelete.Parameters["@customerid"].SourceVersion = DataRowVersion.Original; DA.SelectCommand = cmdSelect; DA.UpdateCommand = cmdUpdate; DA.InsertCommand = cmdInsert; DA.DeleteCommand = cmdDelete; DA.Fill(DS, "Customers"); //then do whatever you want to with modifying it. //And then just do update like this

                      1 Reply Last reply
                      0
                      • D Dave Kreskowiak

                        It's never a good idea to trust ANY data comming into your app, even if it IS from a trusted source. The data can be corrupted by the time it reaches your validation code.

                        Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                             2006, 2007

                        P Offline
                        P Offline
                        PIEBALDconsult
                        wrote on last edited by
                        #15

                        But why assume in this case that the data is "coming into" the application? He could very well be using string userName=System.Security.Principal.WindowsIdentity.GetCurrent().Name or otherwise validating the value.

                        D 1 Reply Last reply
                        0
                        • P PIEBALDconsult

                          You need to set the Commands.

                          A Offline
                          A Offline
                          aecordoba
                          wrote on last edited by
                          #16

                          PIEBALDconsult wrote:

                          You need to set the Commands.

                          You are right. Visual Studio 2005 didn't generate the DeleteCommand, seemingly because the Users table in database hasn't a Primary Key. I added a Primary Key to the table, and when I added this table to the DataSet the DeleteCommand was automaticaly generated. Thank you very much.

                          -- Adrián Córdoba

                          1 Reply Last reply
                          0
                          • P PIEBALDconsult

                            But why assume in this case that the data is "coming into" the application? He could very well be using string userName=System.Security.Principal.WindowsIdentity.GetCurrent().Name or otherwise validating the value.

                            D Offline
                            D Offline
                            Dave Kreskowiak
                            wrote on last edited by
                            #17

                            True. It doesn't make it 100% valid though. What if the app was run using RunAs, but without the new users profile? Suddenly, the profile path doesn't point to where the userId says it should. Making an assumption like that can also cause problems.

                            Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                                 2006, 2007

                            P 1 Reply Last reply
                            0
                            • D Dave Kreskowiak

                              True. It doesn't make it 100% valid though. What if the app was run using RunAs, but without the new users profile? Suddenly, the profile path doesn't point to where the userId says it should. Making an assumption like that can also cause problems.

                              Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                                   2006, 2007

                              P Offline
                              P Offline
                              PIEBALDconsult
                              wrote on last edited by
                              #18

                              Well, my point is that using a parameter doesn't guarantee safety, only validation of the string will do that. Even if his snippet said ... "SELECT * FROM Y WHERE X=" + textbox1.Text ..." ... I'd still not assume that proper validation wasn't performed outside the snippet.

                              D 1 Reply Last reply
                              0
                              • P PIEBALDconsult

                                Well, my point is that using a parameter doesn't guarantee safety, only validation of the string will do that. Even if his snippet said ... "SELECT * FROM Y WHERE X=" + textbox1.Text ..." ... I'd still not assume that proper validation wasn't performed outside the snippet.

                                D Offline
                                D Offline
                                Dave Kreskowiak
                                wrote on last edited by
                                #19

                                It would appear that you missed this part of my previous post: ... The data can be corrupted by the time it reaches your validation code.

                                Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                                     2006, 2007

                                P 1 Reply Last reply
                                0
                                • D Dave Kreskowiak

                                  It would appear that you missed this part of my previous post: ... The data can be corrupted by the time it reaches your validation code.

                                  Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                                       2006, 2007

                                  P Offline
                                  P Offline
                                  PIEBALDconsult
                                  wrote on last edited by
                                  #20

                                  That's why we have validation code. Now, if the data gets corrupted after the validation code...

                                  D 1 Reply Last reply
                                  0
                                  • P PIEBALDconsult

                                    That's why we have validation code. Now, if the data gets corrupted after the validation code...

                                    D Offline
                                    D Offline
                                    Dave Kreskowiak
                                    wrote on last edited by
                                    #21

                                    You can only do so much without resorting to specialized hardware.

                                    Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                                         2006, 2007

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • World
                                    • Users
                                    • Groups