Android SQLite: Creating and updating rows from database










0















I've been using https://github.com/jgilfelt/android-sqlite-asset-helper library for pre-populated database in app. When I want to update multiple rows, the documentation said I should write sql script for that. Is there any other way for that because there are around 200+ rows I want to update. I can't replace the database with new one also because there're already user data in other tables in it.










share|improve this question






















  • What kind of data rows you are updating?

    – Zwal Pyae Kyaw
    Nov 14 '18 at 4:49















0















I've been using https://github.com/jgilfelt/android-sqlite-asset-helper library for pre-populated database in app. When I want to update multiple rows, the documentation said I should write sql script for that. Is there any other way for that because there are around 200+ rows I want to update. I can't replace the database with new one also because there're already user data in other tables in it.










share|improve this question






















  • What kind of data rows you are updating?

    – Zwal Pyae Kyaw
    Nov 14 '18 at 4:49













0












0








0








I've been using https://github.com/jgilfelt/android-sqlite-asset-helper library for pre-populated database in app. When I want to update multiple rows, the documentation said I should write sql script for that. Is there any other way for that because there are around 200+ rows I want to update. I can't replace the database with new one also because there're already user data in other tables in it.










share|improve this question














I've been using https://github.com/jgilfelt/android-sqlite-asset-helper library for pre-populated database in app. When I want to update multiple rows, the documentation said I should write sql script for that. Is there any other way for that because there are around 200+ rows I want to update. I can't replace the database with new one also because there're already user data in other tables in it.







android sqlite






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 4:39









Arkar Min TunArkar Min Tun

415




415












  • What kind of data rows you are updating?

    – Zwal Pyae Kyaw
    Nov 14 '18 at 4:49

















  • What kind of data rows you are updating?

    – Zwal Pyae Kyaw
    Nov 14 '18 at 4:49
















What kind of data rows you are updating?

– Zwal Pyae Kyaw
Nov 14 '18 at 4:49





What kind of data rows you are updating?

– Zwal Pyae Kyaw
Nov 14 '18 at 4:49












2 Answers
2






active

oldest

votes


















0














In short no, SQL is how you interact with the database.



However one single UPDATE could update every row.



Additionally there are convenience methods such as the update method that builds the SQL.



For example say you had a table named mytable which had a column called name and you wanted to change all occurrences of joe to Joseph then the SQL could be :-



String sql = "UPDATE mytable SET name = 'Joseph' WHERE name = 'joe'";


Now assuming that you had a an SQLiteDatabase instance named db then you could use :-



db.execSQL(sql);


Alternately you could use :-



String wherecluase = "name =?";
String whereargs = new String"joe";
ContentValues cv = new ContentValues();
cv.put("name","Joseph");
int rows_updated = db.update("mytable",cv,whereclause,whereargs);


  • This builds and executes the SQL as above.

  • This may seem to be more long-winded however there are advantages to using this method e.g.

    • it returns the number of rows that were updated,

    • it offfers protecting against SQL injection,

    • it properly encloses/escapes data

    • the SQL will be syntactically correct.






share|improve this answer






























    0














    No. Its one way, but not the only way. Another good way is to send them the new data in a new database. Then after you download it, copy the data from the new database to the old one, using upsert mechanics. That would update data to the new information, without losing rows inserted by the user. Of course if you need to worry about changes made by the user, then you need to find some way to detect that and do conflict resolution.






    share|improve this answer






















      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53293288%2fandroid-sqlite-creating-and-updating-rows-from-database%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      In short no, SQL is how you interact with the database.



      However one single UPDATE could update every row.



      Additionally there are convenience methods such as the update method that builds the SQL.



      For example say you had a table named mytable which had a column called name and you wanted to change all occurrences of joe to Joseph then the SQL could be :-



      String sql = "UPDATE mytable SET name = 'Joseph' WHERE name = 'joe'";


      Now assuming that you had a an SQLiteDatabase instance named db then you could use :-



      db.execSQL(sql);


      Alternately you could use :-



      String wherecluase = "name =?";
      String whereargs = new String"joe";
      ContentValues cv = new ContentValues();
      cv.put("name","Joseph");
      int rows_updated = db.update("mytable",cv,whereclause,whereargs);


      • This builds and executes the SQL as above.

      • This may seem to be more long-winded however there are advantages to using this method e.g.

        • it returns the number of rows that were updated,

        • it offfers protecting against SQL injection,

        • it properly encloses/escapes data

        • the SQL will be syntactically correct.






      share|improve this answer



























        0














        In short no, SQL is how you interact with the database.



        However one single UPDATE could update every row.



        Additionally there are convenience methods such as the update method that builds the SQL.



        For example say you had a table named mytable which had a column called name and you wanted to change all occurrences of joe to Joseph then the SQL could be :-



        String sql = "UPDATE mytable SET name = 'Joseph' WHERE name = 'joe'";


        Now assuming that you had a an SQLiteDatabase instance named db then you could use :-



        db.execSQL(sql);


        Alternately you could use :-



        String wherecluase = "name =?";
        String whereargs = new String"joe";
        ContentValues cv = new ContentValues();
        cv.put("name","Joseph");
        int rows_updated = db.update("mytable",cv,whereclause,whereargs);


        • This builds and executes the SQL as above.

        • This may seem to be more long-winded however there are advantages to using this method e.g.

          • it returns the number of rows that were updated,

          • it offfers protecting against SQL injection,

          • it properly encloses/escapes data

          • the SQL will be syntactically correct.






        share|improve this answer

























          0












          0








          0







          In short no, SQL is how you interact with the database.



          However one single UPDATE could update every row.



          Additionally there are convenience methods such as the update method that builds the SQL.



          For example say you had a table named mytable which had a column called name and you wanted to change all occurrences of joe to Joseph then the SQL could be :-



          String sql = "UPDATE mytable SET name = 'Joseph' WHERE name = 'joe'";


          Now assuming that you had a an SQLiteDatabase instance named db then you could use :-



          db.execSQL(sql);


          Alternately you could use :-



          String wherecluase = "name =?";
          String whereargs = new String"joe";
          ContentValues cv = new ContentValues();
          cv.put("name","Joseph");
          int rows_updated = db.update("mytable",cv,whereclause,whereargs);


          • This builds and executes the SQL as above.

          • This may seem to be more long-winded however there are advantages to using this method e.g.

            • it returns the number of rows that were updated,

            • it offfers protecting against SQL injection,

            • it properly encloses/escapes data

            • the SQL will be syntactically correct.






          share|improve this answer













          In short no, SQL is how you interact with the database.



          However one single UPDATE could update every row.



          Additionally there are convenience methods such as the update method that builds the SQL.



          For example say you had a table named mytable which had a column called name and you wanted to change all occurrences of joe to Joseph then the SQL could be :-



          String sql = "UPDATE mytable SET name = 'Joseph' WHERE name = 'joe'";


          Now assuming that you had a an SQLiteDatabase instance named db then you could use :-



          db.execSQL(sql);


          Alternately you could use :-



          String wherecluase = "name =?";
          String whereargs = new String"joe";
          ContentValues cv = new ContentValues();
          cv.put("name","Joseph");
          int rows_updated = db.update("mytable",cv,whereclause,whereargs);


          • This builds and executes the SQL as above.

          • This may seem to be more long-winded however there are advantages to using this method e.g.

            • it returns the number of rows that were updated,

            • it offfers protecting against SQL injection,

            • it properly encloses/escapes data

            • the SQL will be syntactically correct.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 14 '18 at 5:33









          MikeTMikeT

          16.9k112642




          16.9k112642























              0














              No. Its one way, but not the only way. Another good way is to send them the new data in a new database. Then after you download it, copy the data from the new database to the old one, using upsert mechanics. That would update data to the new information, without losing rows inserted by the user. Of course if you need to worry about changes made by the user, then you need to find some way to detect that and do conflict resolution.






              share|improve this answer



























                0














                No. Its one way, but not the only way. Another good way is to send them the new data in a new database. Then after you download it, copy the data from the new database to the old one, using upsert mechanics. That would update data to the new information, without losing rows inserted by the user. Of course if you need to worry about changes made by the user, then you need to find some way to detect that and do conflict resolution.






                share|improve this answer

























                  0












                  0








                  0







                  No. Its one way, but not the only way. Another good way is to send them the new data in a new database. Then after you download it, copy the data from the new database to the old one, using upsert mechanics. That would update data to the new information, without losing rows inserted by the user. Of course if you need to worry about changes made by the user, then you need to find some way to detect that and do conflict resolution.






                  share|improve this answer













                  No. Its one way, but not the only way. Another good way is to send them the new data in a new database. Then after you download it, copy the data from the new database to the old one, using upsert mechanics. That would update data to the new information, without losing rows inserted by the user. Of course if you need to worry about changes made by the user, then you need to find some way to detect that and do conflict resolution.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 14 '18 at 6:42









                  Gabe SechanGabe Sechan

                  67.8k965100




                  67.8k965100



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53293288%2fandroid-sqlite-creating-and-updating-rows-from-database%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Kleinkühnau

                      Makov (Slowakei)

                      Deutsches Schauspielhaus