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
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Extract data from database

Extract data from database

Scheduled Pinned Locked Moved C / C++ / MFC
databasedata-structureshelp
21 Posts 4 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.
  • D dreamerzz

    Hi, I need to do some calculations but firstly, i need to extract values from the database and store it inside the array. double para3[12] = {90.1, 75.2, 60.3, 91.2, 74.5, 61.2, 89.9, 74.8, 59.8, 91.4, 76.2, 60.6}; The above is method i use is hardcoding the values that i need inside the array but because i might need to add on more values to it, i can easily retrieve from the database instead of hard-coding. Hope u can help me.. Thanks a million dReaMerzZ

    D Offline
    D Offline
    David Crow
    wrote on last edited by
    #2

    Read up on the CDatabase and CRecordset classes. They allow for easy access to many data sources, including, but not limited to, databases.


    "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

    D 1 Reply Last reply
    0
    • D dreamerzz

      Hi, I need to do some calculations but firstly, i need to extract values from the database and store it inside the array. double para3[12] = {90.1, 75.2, 60.3, 91.2, 74.5, 61.2, 89.9, 74.8, 59.8, 91.4, 76.2, 60.6}; The above is method i use is hardcoding the values that i need inside the array but because i might need to add on more values to it, i can easily retrieve from the database instead of hard-coding. Hope u can help me.. Thanks a million dReaMerzZ

      G Offline
      G Offline
      gUrM33T
      wrote on last edited by
      #3

      You can also use MFC template class CArray if you've ever tried your hands on templates. All I can assure you is that its not that difficult at all. Gurmeet


      BTW, can Google help me search my lost pajamas?

      My Articles: HTML Reader C++ Class Library, Numeric Edit Control

      D 1 Reply Last reply
      0
      • D David Crow

        Read up on the CDatabase and CRecordset classes. They allow for easy access to many data sources, including, but not limited to, databases.


        "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

        D Offline
        D Offline
        dreamerzz
        wrote on last edited by
        #4

        I have read up on this and tried but dun seems to get what i want to achieve.. there are some errors.

        D 1 Reply Last reply
        0
        • G gUrM33T

          You can also use MFC template class CArray if you've ever tried your hands on templates. All I can assure you is that its not that difficult at all. Gurmeet


          BTW, can Google help me search my lost pajamas?

          My Articles: HTML Reader C++ Class Library, Numeric Edit Control

          D Offline
          D Offline
          dreamerzz
          wrote on last edited by
          #5

          is there any simpler way?

          K G 2 Replies Last reply
          0
          • D dreamerzz

            is there any simpler way?

            K Offline
            K Offline
            Kevin McFarlane
            wrote on last edited by
            #6

            Using a CArray (or STL vector) is far easier than trying to get the data from a database. There will be examples aplenty on codeproject However, if you really want to use a database, what database do you have - MS Access? You don't say whether you're using MFC or just doing straight C++. If MFC then probably the easiest method is to use the DAO classes. Though this might be an old-fashioned way of going about it these days. You could use ADO but, if I recall, MFC does not have native ADO classes - though it's still possible to use it. the point is that these methods are all somewhat more elaborate than using a database. Kevin

            D 1 Reply Last reply
            0
            • D dreamerzz

              is there any simpler way?

              G Offline
              G Offline
              gUrM33T
              wrote on last edited by
              #7

              Yes there is. Using the new operator. At run-time, find out the number of records, and then allocate an array long enough to hold values you want to retrieve. For example, assuming that you've 50 records, the code will look like this:

              LONG lRecCount = 50; // you won't hardcode this, but get it at run-time from database
              double *pdblValues = new double[lRecCount + 1];
              for(LONG i = 0; i < lRecCount; i++)
              pdblValues[i] = collect value from the field here;

              One more thing, don't forget to delete[] pdblValue after you are finished with it. Hope that helps, Gurmeet


              BTW, can Google help me search my lost pajamas?

              My Articles: HTML Reader C++ Class Library, Numeric Edit Control

              D D 2 Replies Last reply
              0
              • K Kevin McFarlane

                Using a CArray (or STL vector) is far easier than trying to get the data from a database. There will be examples aplenty on codeproject However, if you really want to use a database, what database do you have - MS Access? You don't say whether you're using MFC or just doing straight C++. If MFC then probably the easiest method is to use the DAO classes. Though this might be an old-fashioned way of going about it these days. You could use ADO but, if I recall, MFC does not have native ADO classes - though it's still possible to use it. the point is that these methods are all somewhat more elaborate than using a database. Kevin

                D Offline
                D Offline
                dreamerzz
                wrote on last edited by
                #8

                i am using MFC but don't have to show the values out, just need to store into array and calculate an end result we i want to acheive. so using CArray is the only solution and easiest?

                D 1 Reply Last reply
                0
                • D dreamerzz

                  I have read up on this and tried but dun seems to get what i want to achieve.. there are some errors.

                  D Offline
                  D Offline
                  David Crow
                  wrote on last edited by
                  #9

                  dreamerzz wrote: I have read up on this... So this article was of no help? dreamerzz wrote: there are some errors. And those are?


                  "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                  D 1 Reply Last reply
                  0
                  • D dreamerzz

                    i am using MFC but don't have to show the values out, just need to store into array and calculate an end result we i want to acheive. so using CArray is the only solution and easiest?

                    D Offline
                    D Offline
                    David Crow
                    wrote on last edited by
                    #10

                    dreamerzz wrote: so using CArray is the only solution... No, of course not. It's just one of many implementations. From what information you've provided, it sounds like you simply need to store the numbers in a text file. Then you could process them with something like:

                    CStdioFile file("", CFile::modeRead);
                    CString strLine;
                    int nSum = 0,
                    nLineCount = 0;

                    while (file.ReadString(strLine) != FALSE)
                    {
                    nSum += atoi(strLine);
                    nLineCount++;
                    }

                    TRACE("The sum is %d\nThe average is %f\n", nSum, (double) nSum / nLineCount);


                    "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                    D 1 Reply Last reply
                    0
                    • D David Crow

                      dreamerzz wrote: I have read up on this... So this article was of no help? dreamerzz wrote: there are some errors. And those are?


                      "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                      D Offline
                      D Offline
                      dreamerzz
                      wrote on last edited by
                      #11

                      DAMAGE: after Client block (#74) at 0x00432C50 i have tried a lot of other methods, when i compile it, there is no error but when i wan to build, it show me this dialog box

                      D 1 Reply Last reply
                      0
                      • D David Crow

                        dreamerzz wrote: so using CArray is the only solution... No, of course not. It's just one of many implementations. From what information you've provided, it sounds like you simply need to store the numbers in a text file. Then you could process them with something like:

                        CStdioFile file("", CFile::modeRead);
                        CString strLine;
                        int nSum = 0,
                        nLineCount = 0;

                        while (file.ReadString(strLine) != FALSE)
                        {
                        nSum += atoi(strLine);
                        nLineCount++;
                        }

                        TRACE("The sum is %d\nThe average is %f\n", nSum, (double) nSum / nLineCount);


                        "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                        D Offline
                        D Offline
                        dreamerzz
                        wrote on last edited by
                        #12

                        i am using MFC window so is there a way to retrieve directly from the database itself?

                        D 1 Reply Last reply
                        0
                        • D dreamerzz

                          DAMAGE: after Client block (#74) at 0x00432C50 i have tried a lot of other methods, when i compile it, there is no error but when i wan to build, it show me this dialog box

                          D Offline
                          D Offline
                          David Crow
                          wrote on last edited by
                          #13

                          dreamerzz wrote: when i compile it, there is no error but when i wan to build, it show me this dialog box Are you differentiating between a compile and a build? If so, I can only assume that you mean build to be both a compile and a link. Yes?


                          "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                          D 1 Reply Last reply
                          0
                          • D David Crow

                            dreamerzz wrote: when i compile it, there is no error but when i wan to build, it show me this dialog box Are you differentiating between a compile and a build? If so, I can only assume that you mean build to be both a compile and a link. Yes?


                            "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

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

                            sorry for the confusion. There is a build and execute. When i build, there is no error and no warning. but when i execute, it show me the dialog box

                            D 1 Reply Last reply
                            0
                            • D dreamerzz

                              i am using MFC window so is there a way to retrieve directly from the database itself?

                              D Offline
                              D Offline
                              David Crow
                              wrote on last edited by
                              #15

                              Yes, using the CDatabase and CRecordset classes.


                              "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                              D 1 Reply Last reply
                              0
                              • D dreamerzz

                                sorry for the confusion. There is a build and execute. When i build, there is no error and no warning. but when i execute, it show me the dialog box

                                D Offline
                                D Offline
                                David Crow
                                wrote on last edited by
                                #16

                                Have you single-stepped through the code to see which is the offending statement? Up until you know the statement in question, we can't be of much help.


                                "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                                1 Reply Last reply
                                0
                                • D David Crow

                                  Yes, using the CDatabase and CRecordset classes.


                                  "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                                  D Offline
                                  D Offline
                                  dreamerzz
                                  wrote on last edited by
                                  #17

                                  ok. I think this is also the very last ans i would get. Although i don't really know how to go abt it. but still thanks for all the help that u have given.. thanks.

                                  D 1 Reply Last reply
                                  0
                                  • G gUrM33T

                                    Yes there is. Using the new operator. At run-time, find out the number of records, and then allocate an array long enough to hold values you want to retrieve. For example, assuming that you've 50 records, the code will look like this:

                                    LONG lRecCount = 50; // you won't hardcode this, but get it at run-time from database
                                    double *pdblValues = new double[lRecCount + 1];
                                    for(LONG i = 0; i < lRecCount; i++)
                                    pdblValues[i] = collect value from the field here;

                                    One more thing, don't forget to delete[] pdblValue after you are finished with it. Hope that helps, Gurmeet


                                    BTW, can Google help me search my lost pajamas?

                                    My Articles: HTML Reader C++ Class Library, Numeric Edit Control

                                    D Offline
                                    D Offline
                                    dreamerzz
                                    wrote on last edited by
                                    #18

                                    Hi, I have tried out the coding that you have given me. but i dun seems to get the results also.. Anyway, thanks for the help given.

                                    G 1 Reply Last reply
                                    0
                                    • G gUrM33T

                                      Yes there is. Using the new operator. At run-time, find out the number of records, and then allocate an array long enough to hold values you want to retrieve. For example, assuming that you've 50 records, the code will look like this:

                                      LONG lRecCount = 50; // you won't hardcode this, but get it at run-time from database
                                      double *pdblValues = new double[lRecCount + 1];
                                      for(LONG i = 0; i < lRecCount; i++)
                                      pdblValues[i] = collect value from the field here;

                                      One more thing, don't forget to delete[] pdblValue after you are finished with it. Hope that helps, Gurmeet


                                      BTW, can Google help me search my lost pajamas?

                                      My Articles: HTML Reader C++ Class Library, Numeric Edit Control

                                      D Offline
                                      D Offline
                                      David Crow
                                      wrote on last edited by
                                      #19

                                      Gurmeet S. Kochar wrote: double *pdblValues = new double[lRecCount + 1]; Why the extra one?


                                      "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                                      1 Reply Last reply
                                      0
                                      • D dreamerzz

                                        ok. I think this is also the very last ans i would get. Although i don't really know how to go abt it. but still thanks for all the help that u have given.. thanks.

                                        D Offline
                                        D Offline
                                        David Crow
                                        wrote on last edited by
                                        #20

                                        dreamerzz wrote: Although i don't really know how to go abt it In one of my earlier posts, I provided a link to a "how to" article. Once you go through those steps, not just glancing over them, you'll have a working example. Here are some others: http://www.codeproject.com/database/#ODBC http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vctutor98/html/\_gs\_creating\_a\_new\_database\_application.asp http://msdn.microsoft.com/library/en-us/vctutor98/html/\_gs\_about\_step\_1.asp?frame=true


                                        "The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)

                                        1 Reply Last reply
                                        0
                                        • D dreamerzz

                                          Hi, I have tried out the coding that you have given me. but i dun seems to get the results also.. Anyway, thanks for the help given.

                                          G Offline
                                          G Offline
                                          gUrM33T
                                          wrote on last edited by
                                          #21

                                          Can you please provide us with some code of how you are doing this. It may be that you are doing something wrong in your code. Gurmeet


                                          BTW, can Google help me search my lost pajamas?

                                          My Articles: HTML Reader C++ Class Library, Numeric Edit Control

                                          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