SitePoint Sponsor

User Tag List

Results 1 to 18 of 18

Thread: Storing images into access database along with page per records

  1. #1
    SitePoint Enthusiast
    Join Date
    Feb 2007
    Posts
    79
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Storing images into access database along with page per records

    i m developing website using asp.net with microsoft access 2003
    i have product details along with the images now i want to add this images into database but how i add this pictures what code is use if there are 100 products with 100 images i want to show 10 records per page i need also code of that

  2. #2
    SitePoint Mentor NightStalker-DNS's Avatar
    Join Date
    Jul 2004
    Location
    Cape Town, South Africa
    Posts
    2,748
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Firstly I would recommend saving the image to disk and the path in the database. That being said, MS Access is not ideal for web use and should be avoided. Use MS SQL Express. It is free.

    There will be lots of code examples on the internet of how to do paging of result sets. Google around, write some code. Then if you get stuck, post your code here and we can help you.

  3. #3
    SitePoint Author silver trophybronze trophy
    wwb_99's Avatar
    Join Date
    May 2003
    Location
    Washington, DC
    Posts
    10,424
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Seconding the please, please don't store images in a MSAccess DB and use them on the web. That doesn't work so good on the desktop in a shared environment, never mind on the web.

  4. #4
    SitePoint Zealot
    Join Date
    Jan 2007
    Location
    Almere, The Netherlands
    Posts
    160
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by wwb_99 View Post
    Seconding the please, please don't store images in a MSAccess DB and use them on the web. That doesn't work so good on the desktop in a shared environment, never mind on the web.
    Just curious if you ever tried using an Access database on the web? Because when your code is good (Open Connections as late a possible, close them as soon as possible and make sure you dispose the connection), working with Access (actually a Jet Database Engine) in a web environment can work very well. The same applies to desktop applications.

    The problems with Access databases start when multiple users open connections when the application starts and use forms where tables are bound to forms. Then you're asking for trouble in multiuser environments when users entering data in the same records at the same time. But that's not how you should use Access or any other database for that matter. although it is temtping to build a Form quickly using the wizards, but should only be used for single user applications.

    Even storing files in an access database is possible without mayor problems (I wouldn't recommend storing large files), although you should have a good reason to do so. Note that an Access file has a size limit of 2GB, when you store many files this can become an issue, but then you can just split the tables over multiple mdb files...

    I've seen large websites and desktop applications with many (30+) simultanious users running without any problems for years, performance is excellent.

    More information on how to store files into an Access Database:

    http://www.mikesdotnetting.com/Article/123

  5. #5
    SitePoint Author silver trophybronze trophy
    wwb_99's Avatar
    Join Date
    May 2003
    Location
    Washington, DC
    Posts
    10,424
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Yes, I have. Actually started my web development career building PHP apps accessing access DBs as a matter of fact. And I still have a love for Jet/Access dbs--we actually use them for lots of complex data import/export/schlepping operations. Transporting files capable of handling some internal code and referential integrity can be very useful. And you are correct inasmuch that Jet can scale pretty well with someone who knows what they are doing and how not to get in loads of trouble.

    All this doesn't change the fact that, in 2010, there are many of great *free* options that make it much harder to shoot yourself in the foot and corrupt the database accidentally.

  6. #6
    SitePoint Mentor NightStalker-DNS's Avatar
    Join Date
    Jul 2004
    Location
    Cape Town, South Africa
    Posts
    2,748
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Thats all good and well, but at the end of the day it is not as optimized as SQL server. And the performance can suffer a lot with large database files. Knowing what your doing will help, but that would be even better in SQL. What about bigger sites with 1000+ concurrent users?

  7. #7
    SitePoint Zealot
    Join Date
    Jan 2007
    Location
    Almere, The Netherlands
    Posts
    160
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by NightStalker-DNS View Post
    Thats all good and well, but at the end of the day it is not as optimized as SQL server. And the performance can suffer a lot with large database files. Knowing what your doing will help, but that would be even better in SQL. What about bigger sites with 1000+ concurrent users?
    How many people, that ask beginner question on forums like this, build web sites with 1000+ concurrent users? And performance CAN suffer with large database files, but before a database becomes large, you need to fill it wit data and I've seen many databases (Access, SQL Server, MySql) that are very small! I recently saw a website running with a 500 MB website, with some tables have over 1,000,000 record, running just fine with an Access backend.

    Many people host small to medium sized websites on shared hosted servers, and they never even will get 1000 concurrent users (they will be glad if they have 100!, but most likely, their hosting provider starts complaining that their website is using too much resources). For this purpose, Access will do just fine. Many times, you'll need to pay extra when you want an SQL database, sometimes the amount of SQL dataspace is limited, and the amount of databases on the SQL database server is so large that the performance is so bad that Access performance even better!

    Quote Originally Posted by wwb_99 View Post
    All this doesn't change the fact that, in 2010, there are many of great *free* options that make it much harder to shoot yourself in the foot and corrupt the database accidentally.
    Yes, when you have a (Virtual) Dedicated server, why not install SQL Server Express (free), but many people don't have the luxury of a (virtual) dedicated server, so their free alternative is Access, and I think, In a shared hosted environment, many times Access is the best solution.

    But this is an everlasting discussing, I think it is just wrong to say in general that "Access should be avoided". In many situtions, Access will do just fine....

  8. #8
    SitePoint Guru Jason__C's Avatar
    Join Date
    Oct 2009
    Location
    Racoon City
    Posts
    654
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    I'll chime in. Yes, you can use Access for the web, however it was not designed for the web, unlike SQL Server, MySQL, .ect. Those Databases had the web in mind as they matured. As previous posters said, you can use it, but if your app will be changing in the future, meaning getting bigger or more users will be using it, that will create a bottleneck that might de-rail you entire app. Which would force you to change the plumbing code for the app. It's best to prepare for the future, rather then focus on the present.

    Don't take offence to the replys you got, these people know alot more then you, and I, know about .NET. In my mind, they offered sound advise that you should listen to. It's all a learning process, and if someone knows more then you, you could save yourself trouble down the road by listening.

    Anyways, the final decision is up to you, but I second what the other posters said. Use SQL Server Express or MySQL.

  9. #9
    SitePoint Zealot
    Join Date
    Jan 2007
    Location
    Almere, The Netherlands
    Posts
    160
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by USPatriot View Post
    these people know alot more then you, and I, know about .NET.
    And how do you know who knows more? Although I don't share the commonly accepted opinion that Access should better not be used in web environments (or in multi user desktop environments), doesn't mean that I'm a beginner in .NET or (web) development.

    Quote Originally Posted by USPatriot View Post
    Anyways, the final decision is up to you,
    Thank you so much. I leave the final decision to the people that hire me, I'll advice them to use SQL Server, My SQL, Oracle or wahtever is there's a need to. And when Access is an option also, I'll tell them that, also telling about the possible (dis) advantages etc. but I keep an open mind to it.

    Quote Originally Posted by USPatriot View Post
    but I second what the other posters said. Use SQL Server Express or MySQL.
    I know one thing. I know more than you. And no, using SQL Server or MySQL isn't by default a better solution to every problem....

  10. #10
    Resident OCD goofball! bronze trophy
    Serenarules's Avatar
    Join Date
    Dec 2002
    Posts
    1,911
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by selicon.valley View Post
    i m developing website using asp.net with microsoft access 2003
    i have product details along with the images now i want to add this images into database but how i add this pictures what code is use if there are 100 products with 100 images i want to show 10 records per page i need also code of that
    1) I would definately save the image to file, and store the path in the database instead.

    2) Unfortunately, I don't know enough about Access to answer your question on selecting records, but I have a hunch you should look into the LIMIT sql statement. However, if this version utilizes Linq, look at the Take(x) and Skip(x) methods.

  11. #11
    SitePoint Mentor NightStalker-DNS's Avatar
    Join Date
    Jul 2004
    Location
    Cape Town, South Africa
    Posts
    2,748
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Easy dudes. No need to get in a huff. Lets just have a mature debate on advantages/disadvantages and capabilities of either technology. No need for anyone to agree. No insults or mud slinging is needed.

    On that note, I have not seen a hosting company offereing .NET hosting without offering SQL Server with it. I am not saying access is not capable. Just in my mind, I would rather use the more advanced/optimized database store to save myself down the line if the site had to become big overnight.

  12. #12
    Resident OCD goofball! bronze trophy
    Serenarules's Avatar
    Join Date
    Dec 2002
    Posts
    1,911
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)
    Thanks Stalker. I was going to say something myself, but didn't want to seem part of the huff. =/ I just tried to answer his questions as best I can.

  13. #13
    SitePoint Zealot
    Join Date
    Jan 2007
    Location
    Almere, The Netherlands
    Posts
    160
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Compare

    Quote Originally Posted by NightStalker-DNS View Post
    That being said, MS Access is not ideal for web use and should be avoided.
    to

    Quote Originally Posted by NightStalker-DNS View Post
    I am not saying access is not capable. Just in my mind, I would rather use the more advanced/optimized database store to save myself down the line if the site had to become big overnight.
    The last quote is much more meaningfull than your first one...

    Quote Originally Posted by NightStalker-DNS View Post
    Use MS SQL Express. It is free.
    MS SQL Express might be free, however on shared hosting accounts you don't have the luxury of installing it!

    Quote Originally Posted by NightStalker-DNS View Post
    I have not seen a hosting company offereing .NET hosting without offering SQL Server with it.
    Then you must have your eyes closed. Just an example, a well know hosting provider:

    https://www.discountasp.net/

    They offer SQL Server as an Add On, which cost more than the webhosting (including Access support) itself.

    And although many US hosts offer hosting packages including SQL Server, in other country's, like where I live in the Netherlands, this isn't the case. That's because the prices here are much more realistic as many offers I find in the US. Many of them offer all kinds of "unlimited" packages including SQL Server for just $ 5,00 a month. The only way they can do that is by overselling their resources.

    Did you ever try to connect to A SQL Server database on a shared hosted server with a company like that? When you connect remotly using SQL management Studio (Express), it takes many seconds before you'll see the databases. Then you'll have to look for your database among the hundreds of databases (I've seen even 1 hosted server with over 1000!!!). And when you do some simple performance tests, it turned out that Access was actually performing better as SQL server!!!

    When "senior" developers like you talk about the advantages of SQL Server over Access, and tell people better not to use Access, they usualy talk form their own perspective, where you have a Server (or even more), writing professional websites with very large and complex database with many visitors etc. But most people, especially the ones that ask question, don't have that luxury, they have a shared hosting account and write websites which hopefully attract many visitors, but most if them never will!!!!

    Also, many of those senior developers talk bad about Access, because of hearsay but never took the time to find out for themselves what Access can't, but most important, what Access CAN do.

    Regarding shared hosted environments. I never seen a website running on a shared server that needed SQL Server because of performance. There can be other reasons, for example the need to remotly connect to your database

    The first bottleneck on a shared hosted server are the reources themelf, because when the amount of page-hits becomes so large that it will become an issue, the hosting company will have you move your website somewhere else, because it will use to many reources.

    Upgrading to SQL Server from Access is a piece of cake if you write your code well. I've done this many times, it only take me approx. half an hour or so. I always use the System.Data.Common namespace instead of the OleDb or SqlClient namespace, so by just changing the connectiontring in Web.Config. I make sure that all SQL statements I write work in both Access and SQL Server. Sometimes this is not possible, then I already write 2 different statements inside an if statement, checking which provider is used. And upsizing an Access Database to SQL server is simply a matter of using the upsize wizard.

    Yes, I know, I don't use Stored Procedures and many developers will tell me I SHOULD use them. That's a completly different discussion, I've seen this discussions many times, I used Stored Procedures in the past and decided that I don't use them anymore, unless there's a good reason to do so, but after I made that decision some 5 years ago I never found a project that would give me that reason.

  14. #14
    SitePoint Enthusiast
    Join Date
    Feb 2007
    Posts
    79
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    the problem is that i will not give the ftp to my client so i can save path into field of access but how my client will upload all this pictures

  15. #15
    SitePoint Author silver trophybronze trophy
    wwb_99's Avatar
    Join Date
    May 2003
    Location
    Washington, DC
    Posts
    10,424
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Modern method would be to make a URL field and get your client a flickr account. Or just get a static hosting account somewhere for images.

  16. #16
    SitePoint Mentor NightStalker-DNS's Avatar
    Join Date
    Jul 2004
    Location
    Cape Town, South Africa
    Posts
    2,748
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    I was only offering my advice. If you do not want it, do not use it. It is your choice. You would be false to assume I only work with SQL and not access as well as dedicated servers. I work on a lot of sites, some dedicated servers and some shared host.

    I said you should avoid access, as it is far less forgiving than SQL server, especially if you do not know the tricks to keep the performance up to scratch. Regardless of how many users you get. And should your users spike for watever reason, rather be ready for it than not.

    Furthermore, if a hosting company does not offer SQL server as a default option, it should not even be considered in my opinion. Unless it is not a .NET hosting provider.

    So yes, access can be used for web user quite effectively. If you know how to do it. So me not noing your experience, I would suggest you just stay away from it. But it clearly seems you do, so if you want to use it as your database, go ahead.

    Writing it the way you have is very good, to easily switch between databases for quick migration if needed.

    But you should always save the image path into the database instead of the binary.

    I am not sure I understand your last comment? Are you asking how will your users upload the image? Or are they going to FTP it up.

  17. #17
    SitePoint Enthusiast
    Join Date
    Mar 2010
    Posts
    27
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    you can easily upload the picture with the set html codes

  18. #18
    SitePoint Enthusiast
    Join Date
    Feb 2007
    Posts
    79
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    is there any free account available for image hosting

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •