Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Programming Books Media Data Storage Software Book Reviews IT Technology

MySQL: Building User Interfaces 266

Craig Maloney writes "If you are a Windows programmer looking to create or move your stand-alone database applications away from Microsoft-specific tools such as Visual Basic, Visual C++, Access or SQL Server, MySQL: Building User Interfaces is written just for you." Read on for the rest of Craig's review.
MySQL: Building User Interfaces
author Matthew Stucky
pages 632
publisher New Riders
rating 4/10
reviewer Craig Maloney
ISBN 073571049X
summary MySQL and GTK+ are used to create cross-platform applications, with copious code listings.

What's in the book?

The first chapter guides the reader through the basics of MySQL and how it compares to Access 2000 and SQL Server 97. Next, a code listing demonstrates the basics of connecting to MySQL via C using the MySQL C API. the book gives an all-too-brief whirlwind tour to the basics of MySQL. The next four chapters are a tutorial on how to use GTK+ and GLADE, focusing on how these toolkits are similar and different from their Visual Basic counterparts. GTK+ was chosen in this book because of its cross-platform compatibility with both Windows and Linux / UNIX operating environments. The second part of the book takes what was learned about MySQL and GTK+ with GLADE and uses it to create a stand-alone application (a real-world order-entry application).

What's Good?

Throughout MySQL: Building User Interfaces, Stuckey describes exactly what he is doing and why he is doing it that way. The introduction to GTK+ in the first part of the book describes just about every GTK+ widget available (menus, buttons, sliders, status bars, etc.), and creates a monster busy-box application (not to be confused with the busy-box application by Bruce Perens) demonstrating those widgets by themselves. Later in the book Stuckey uses Glade to put applications together, but not using Glade early on gives the reader a chance to see what is happening under Glade's abstraction. During the building of the order-entry application, Stuckey explains the design decisions behind the widgets. Each window of the application is introduced first with a diagram describing where the widgets will be followed by the code for each widget. The design looks like a Visual Basic application designed by a a programmer, with an eye toward the functional rather than the aesthetics of user interface design, but as an introduction to GTK+ programming it works well.

What's Bad?

If there was ever a book that required a CD-ROM to accompany it, this book gets my nomination. Authors have to walk a fine line between presenting code snippets that don't make sense by themselves, or risk boring readers with page after page of code that might confuse readers who aren't yet ready to view full code listings. MySQL: Building User Interfaces chose to include the full code listing for everything. This is both a blessing and a curse: readers have the code right in front of them and don't have to worry about being in front of a computer while reading the book, but the flow of the book is interrupted every time something is introduced.

The descriptions also suffer, because those code listings are expected to explain in more detail what is going on. In the GTK+ introduction, widgets are introduced with short paragraph introductions. The real-world application, which should be the focus of the book, reads like an assembly line: A screen is introduced, the widgets are placed, and the code is listed. Worse, files which make little sense without a computer (such as files generated by glade) are presented along with the code listings. This makes reading this book a chore. Thankfully, there is an FTP site with the code ready to use, but future versions of this book would be best served to include it on disc.

Perhaps a balance can be struck in a future edition where important code concepts are highlighted without sacrificing seeing the code in a meaningful context.

So, what's in it for me?

Windows programmers who need a hand in getting their applications to Linux or UNIX may find this book helpful (but overwhelming) as they learn. This book stands out as a bridge for Windows programmers to make their transition to Linux and UNIX smoother, but the emphasis and amount of code listings in this book may make Windows programmers choose a different route.

You can purchase MySQL: Building User Interfaces from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

This discussion has been archived. No new comments can be posted.

MySQL: Building User Interfaces

Comments Filter:
  • Try SQLite (Score:5, Informative)

    by hendridm ( 302246 ) * on Thursday February 05, 2004 @06:01PM (#8194836) Homepage

    MS Access has the advantage (on Windows machines anyway) of being a stand-alone database without needing a service to be installed. For a app where you don't want to have to install MySQL server and have it waste resources, you might consider SQLite [sqlite.org]. Unlike MySQL embedded, it's release under the public domain. MySQL Embedded is licensed under the GPL and has the following requirement [mysql.com]:

    ... any program which includes, by linking with libmysqld, the MySQL source code must be released as free software (under a license compatible with the GPL).

    Although, depending on what you want to do with the software, this may not be a problem. I'm all for free and open source software, but a brother's gotta eat too.

    • Re:Try SQLite (Score:2, Interesting)

      by Anonymous Coward
      Can someone expand on the difference between a stand-alone db and one that needs a service to be installed? I just don't understand what the differences are between Access and other databases such as mySQL...
      • Re:Try SQLite (Score:4, Informative)

        by man_of_mr_e ( 217855 ) on Thursday February 05, 2004 @06:11PM (#8194944)
        Access is simply an application. When you open the database, it's just like opening a file in a word processor.

        MySQL is a service that runs seperately from the application and must be started and stopped seperately. In most cases, the service is started at boot time and runs all the time, wasting resources unless you manually stop it.

        • by Frymaster ( 171343 ) on Thursday February 05, 2004 @06:29PM (#8195137) Homepage Journal
          he service is started at boot time and runs all the time, wasting resources unless you manually stop it.

          right. think "daemon".

          microsoft just uses the word "service" because sco owns the word "daemon".

        • Re:Try SQLite (Score:2, Informative)

          by AndroidCat ( 229562 )
          Hmm. Access is an application which uses the underlying MSJET engine. Anything that can create an ADO object (or OLEDB or DAO...) can use that engine without Access running. The engine also handles reference counts so that if more than one program is using it, it won't load multiple copies and it won't unload until the last one closes it.
          • Re:Try SQLite (Score:3, Informative)

            by man_of_mr_e ( 217855 )
            Everything that you said is true, but MSJET doesn't run as a service. It's just DLL's that get loaded into the applications process space and execute in the context of the application.
      • Re:Try SQLite (Score:3, Insightful)

        by cscx ( 541332 )
        An Access database (usually a .mdb file) is just a binary file. Your application uses the Access DB driver to read/write to this file.

        MySQL on the other hand (which may consist of multiple binary files) has to run a daemon (i.e., server) to be accessed. Your application uses the MySQL driver to talk to the MySQL daemon, either through TCP/IP or a local socket.

        This is why MySQL will *never* be a replacement for Access, despite what I often see on slashdot. You can fit a small Access database on a floppy. C
        • Re:Try SQLite (Score:2, Insightful)

          by laird ( 2705 )
          "This is why MySQL will *never* be a replacement for Access, despite what I often see on slashdot."

          That's true -- it would be more accurate to describe DBM as a replacment for Access, and MySQL or PostgreSQL as a replacement for SQL Server.
          • Hmm, does DBM allow you to run SQL queries against it?

            Often I've seen Linux users suggest using PHP + MySQL as a drop-in replacment to Access. That is really way off base.

            Does DBM have a GTK/Qt interface, or is it only through a Perl CGI?

            Access' main advantage is that the interface can run as a standalone app.
          • by ttfkam ( 37064 ) on Thursday February 05, 2004 @06:49PM (#8195336) Homepage Journal
            ...if you don't use transactions, stored procedures, triggers, views, sequences (read: real ones), or if you actually want your database to be typesafe and have your insert/update to throw an error (or at least a warning!) on invalid data. Otherwise MySQL is most certainly not a viable replacement, although the codebase which used to be called SAPDB is. Firebird also qualifies for a replacement.

            Also, if you need advanced XML querying tools for your database, none of the open source RDBMSs can currently act as a reasonable drop-in replacement for MS SQL Server.

            If you don't need any of those features (and especially haven't actually used any of them in existing code), then MySQL could be added to the list of open source RDBMSs that fit the requirements for your project.
            • Also, if you need advanced XML querying tools for your database, none of the open source RDBMSs can currently act as a reasonable drop-in replacement for MS SQL Server.

              I have to agree here. I was using MSSQL the other day and was able to open an XML document inside a stored proc and query it like it was a table. All I could say was "Damn, that's pretty cool!"

              I had been using the FOR XML EXPLICIT quite a bit for output, but didn't (until recently) need to read XML back into the database.
            • by Valar ( 167606 ) on Thursday February 05, 2004 @07:30PM (#8195776)
              MySQL has transactions. It has for QUITE awhile. In fact, I write code that uses MySQL transactions everyday. Stored procedures are availible (will be availible?) in version 5.
              • by ttfkam ( 37064 ) on Thursday February 05, 2004 @09:15PM (#8196921) Homepage Journal
                For varying definitions of "quite a while." Other than that I would agree with you except for the fact that every table involved in the transaction must be an InnoDB table. Have a half-and-half setup? When that transaction rolls back, the InnoDB tables will remove the changes, but the MyISAM tables will still be changed. ...not that MySQL will tell you this. No. Once again, it will do it all silently without even a warning to let you know that you need to convert one more of your MyISAM tables to InnoDB.

                Which doesn't even cover the fact that if you are being hosted by an ISP, using their copy of MySQL, and you type in:

                CREATE TABLE foo (
                ) type=innodb;

                and they are either (a) running an older version of MySQL or (b) disabling support for InnoDB tables because of their noticeably higher overhead than MyISAM (yes, both cases happen quite regularly), you will be none the wiser.

                MySQL will not issue a warning, error, or valentine's day card for your troubles. So here you are, happily SQLing away without a care because you have InnoDB tables until you notice some strange data...because...you aren't running InnoDB tables after all.

                Be honest, how often do you run the following?

                SHOW CREATE TABLE foo;

                Everytime you create a table? No?

                How about the next statement? Here we attempt to give some users on Slashdot 10% more of a clue.

                UPDATE slashdot_users SET (clue = (clue * 1.1)) WHERE preferred_db = 'MySQL';

                and (oops!) something went wrong halfway through for some reason. Maybe someone killed the process. Maybe someone kicked a cord. Maybe you ran out of memory on the box and the process crashed. The world is an imperfect place. Back to work though: how many Slashdot users had their clues upped? If they were updating a MyISAM table that "didn't need transactions," we have no idea.

                Transactions aren't just BEGIN and END statements. They aren't just commit() and rollback() functions. They are intrinsic to a valid datastore. They are the Atomicity in ACID. That UPDATE statement was a transaction in all contexts used to describe databases.

                MySQL and transactions are like assembly language and for-loops. They can be made to go together, but they were not originally designed for such a task. In assembly, it's a set of well-placed jump (goto) statements. In MySQL, it's a set of table=innodb flags. Some people do it the hard way for no good reason even when easier, less error prone methods exist. For the rest of us, we use a higher-level language or -- in this case -- a higher-level database. If and only if we see a need to optimize do we drop down to assembly (MySQL). You don't start with assembly and then try to find rationales for a higher-level language.
            • by damiena ( 263598 ) on Thursday February 05, 2004 @07:45PM (#8195884)
              Firebird? It can do databases, too?

              That browser can do everything!
            • PostgreSQL was one of the two, and it has stored procedures, triggers, and views. I believe it has it's own version of sequences, just as MySQL does. (Which I personally prefer to MS SQL's)
              • At least not ones that conform to the ANSI SQL definition of sequences.

                Sending a NULL to an AUTO_INCREMENT field is not the same as an SQL sequence.

                Can you skip numbers easily in MySQL (eg. tell the DB to continue from some arbitrary number next)? Can you put explicit values into the column without the AUTO_INCREMENT overriding you silently? (My favorite part: MySQL changing the values you enter without even telling you.) Can you tell a MySQL sequence to have a maximum value lower than the maximum valu
        • Re:Try SQLite (Score:2, Interesting)

          So... You are telling me that Microsoft Access, or at least that part of it _necessary_ to read mdb's will fit on the floppy as well?

          I like MySQL because it _is_ a server -- You can create any application in (almost) any language on any platform (think php) to interface with a MySQL database. Try telling me that you can do that with access.

          And you _can_ also fit a SQL db on a floppy.

          To sum:
          -You cant fit M$ Access on a floppy, but you can a db.
          -You cant fit MySQL on a floppy, but you can a db
          • Try telling me that you can do that with access.

            In a word, yes.
          • MySQL is free (and all applications do remain PROPRIETARY provided they dont modify the MySQL source in any way -- Read the licence properly dudes.

            Your app only remains proprietary until you decide to distribute it. If you distribute an app that uses MySQL APIs, either (1) you have to GPL your app or (2) you have to pay MySQL if you don't want to GPL your app. It doesn't matter if your app is to be BSD-licensed, closed-source, or whatever...if it's not GPL'd, you have to pay MySQL if you distribute yo

        • Re:Try SQLite (Score:2, Informative)

          by torok ( 632410 )
          MySQL will *never* be a replacement for Access

          I am in complete agreement.

          I write small DB apps for small businesses. My clients all have MS Access installed. I would love to be able to use all open-source tools to develop these apps, but so far nobody can show me something that's as simple for my computer-illiterate clients to install as "Here, copy this .mdb file to your hard drive and double-click on it". Installing one more piece of software wouldn't be hard either, but if I have to say "Here, install

          • wait now.. so an mdb file is the access database, but what happens when you click it? Do you bind applications and the access database is uses together into an mdb file?
            • An Access .mdb can hold both the 'back end' tables/views, and the 'front end' GUI, code, SQL statements, procedures, reports, etc.

              Although, a better way to deploy an application in Access is two mdb's. One containing the backend table structure & data, and one containing the front end GUI. That way, when you want to implement new features in the GUI, you don't have to screw with the data. Simply delete the prev version front end, ad drop in the new one. Via code, this can be automatic & seamless t
        • "You can fit a small Access database on a floppy. Conversely, you may need a full fledged DBA to run MySQL."

          On the other hand, my current fieldwork database (at the point we were switching from access to mysql) was a 50mb Access file, but a 200kb mysql dumpfile.

          I could refresh remote copies of the mysql version over a 56k dialup (or by floppy) no problem, but duplicating the access db (don't even talk to me about 'sync' - I lost count of how many rollbacks to backup I had to do after using sync. one of t
          • n the other hand, my current fieldwork database (at the point we were switching from access to mysql) was a 50mb Access file, but a 200kb mysql dumpfile.

            You are talking about two different things. How large would the Access mdb be if it were only the table structure and data? Your 50mb Access file presumably contained all the front end junk as well. Which can be quite large. Especially if you don't Compact once in a while.
        • Re:Try SQLite (Score:3, Interesting)

          by millahtime ( 710421 )
          wait, who still uses a floppy. The only time I have used one of those in the last 4 years is an ftp install of reebsd. other then that, what use is there?
        • This is why MySQL will *never* be a replacement for Access, despite what I often see on slashdot.

          It's all a matter of perspective. To a programmer, Access is the means of a cheap no-frills datasource that can be served as a service on the internet or an intranet. So in that sense, MS Access is already being replaced in that area. And to some extent, even SQL Server 2000 is starting to be replaced by MySql in some instances. And no, I'm not just trolling. And yes, I do realize that SQL Server is still much

      • Re:Try SQLite (Score:4, Informative)

        by Mod Me God Too ( 687245 ) on Thursday February 05, 2004 @06:18PM (#8195022)
        I do a little DB development. The basic difference is a DB system like MySQL, Oracle or SyBase is that the 'DB' is the back-end (indeed it is a server-type process) which is interrogated by SQL statements (the front end may be built in C++, VBA, whatever), whereas something like Access is an all-in-one solution with the back-end and the front-end in the same app mish-mashed together (it may purport to be SQL-like, but only from within the app, not as a server) - I think MS still provide Foxpro as Access simple can't hack really big work. So an SQL-type database is the classic client-server, Access and Paradox don't seperate front and back ends (they say they can be split, but that is a bit of a bodge job).

        Wikipedia has a more thorough discussion here (for SQL) [wikipedia.org] and here (databases in general but quite a read) [wikipedia.org]
        • Re:Try SQLite (Score:4, Informative)

          by cscx ( 541332 ) on Thursday February 05, 2004 @06:33PM (#8195175) Homepage
          Actually, I think you may have been mislead if I read you correctly. Another person in the thread was correct when they said that Access is a front-end to the actual Access database. You can run SQL queries against an Access database... the functionality is built into the driver.
    • Re:Try SQLite (Score:2, Interesting)

      by gandy909 ( 222251 )
      I suppose the app could easily be written to start the server when it starts and shut the server down when it ends, thus not wasting resources all the time...couldn't you? Not that mysqld is a resource hog anyway...
      • Re:Try SQLite (Score:2, Insightful)

        by hendridm ( 302246 )

        > I suppose the app could easily be written to start the server when it starts and shut the server down when it ends

        True, but besides being sort of hokey, the requirement of having MySQL installed might not be ideal if your target audience isn't savvy enough to install it, or perhaps don't want extra, normally unnecessary, stuff on their computer. I guess it all depends on your needs and target audience.

    • I'm not familiar with MySQL. Is it possible to start and stop the service from your application, as your application loads and unloads? I mean, even if there's a delay in starting MySQL (MS SQL starts and stops very quickly), it should be possible to do it in the background as your application loads without much (if any) delay from the user's perception.

      I've been thinking of trying that with FireBird [firebirdsql.org].

      = 9J =

    • Locking Problem (Score:4, Interesting)

      by stoolpigeon ( 454276 ) <bittercode@gmail> on Thursday February 05, 2004 @06:21PM (#8195052) Homepage Journal
      from the sql lite page it looks like multiple users can select silmultaneously but only write to the database one at a time. Locking for writes is not record level, page level or even table level - it is the whole database.

      Too bad- because MySQL really does not replace Access but neither does this- unless it will only run internally to one user.

      • Re:Locking Problem (Score:3, Insightful)

        by LuxFX ( 220822 )
        from the sql lite page it looks like multiple users can select silmultaneously but only write to the database one at a time.

        I don't see this as a problem, because at least I see SQLite as more of a portable pre-packaged data structure, rather than a traditional multi-user database. I haven't had a chance to use it yet myself, but I look forward to using it in stand-along applications where I need good data structure and the ability to filter and search for specific data. I'm a fair hand with MySQL, so
    • by jcoleman ( 139158 ) on Thursday February 05, 2004 @06:22PM (#8195064)
      I'm all for free and open source software, but a brother's gotta eat too.

      Hope you like Indian food!

    • Re:Try SQLite (Score:2, Informative)

      by ttfkam ( 37064 )
      It's not like you can just drop an *.mdb file onto a box and use it. Access still needs to be installed. This puts it on about equal footing with MS Access in that even though MS Access is more common, MySQL is a free download if the system you're on doesn't have it. Of course, that assumes your office is running MS Windows. (Not a bad assumption, but good to keep in mind.)

      Along those lines, you shouldn't be coding directly to MS Access anyway. Writing your stuff to an ODBC datasource is a much better
      • Actually, all you need is the Microsoft Data Access Components installed ( http://msdn.microsoft.com/data/ ) if you wish to just read/write to the Access database.

        And as a side note, if you're doing any sort of development in Access, your database shouldn't even be in the Access file. You're much better off using a real database, like MS SQL or MySQL/etc. to handle the data storage, and link to that through ODBC or ADO (I prefer ADO, but whatever.) Also, your program's logic (especially when it's complex)
        • You're much better off using a real database, like MS SQL or MySQL/etc. to handle the data storage...
          Also, your program's logic (especially when it's complex) should be contained server-side, in the form of a stored procedure in the database.

          As MySQL doesn't support stored procedures, these statements are incompatible. But then you knew that didn't you, you cheeky bastard. ;-)
  • more sellers (Score:4, Informative)

    by tedtimmons ( 97599 ) * on Thursday February 05, 2004 @06:02PM (#8194848) Homepage

    amazon link [amazon.com]

    isbn.nu link [isbn.nu]

    half.com link [ebay.com]

    No affiliate tags are used above. But here's the amazon link [amazon.com] with my tag, if you feel generous.

  • My opinion (Score:2, Informative)

    by W32.Klez.A ( 656478 ) *
    I have read this book, and used it to my advantage. However, they don't properly explain some parts about what you're doing, and why you're building the interface. I was hard pressed to find the exact reasoning they used for some of the things they did, but other than that, it's a great resource for mysql developers such as myself.
  • MySQL Feature Set (Score:4, Insightful)

    by Saeed al-Sahaf ( 665390 ) on Thursday February 05, 2004 @06:05PM (#8194882) Homepage
    Before all the naysayers start in on what a flaky database MySQL is, how it doesn't do this or that, that it just a toy, please visit their web site and see what its current feature set is.
    • Re:MySQL Feature Set (Score:3, Informative)

      by Anonymous Coward
      another interessting read is here. [sql-info.de]
  • by spun ( 1352 ) <loverevolutionar ... m ['oo.' in gap]> on Thursday February 05, 2004 @06:05PM (#8194888) Journal
    Before that, the dang thing doesn't support nested subqueries, or any kind of subqueries on inserts and deletes. Found that out the hard way recently (the docs don't make it very clear) and had to rewrite a bunch of elegant SQL as less elegant Perl loops and wacky joins.

    Still, I love MySQL. Postgres is more full featured, but for the smallish web-based applications I write, it's overkill.
    • Actually, subqueries are only supported in 4.1, which is not considered production level. So there still isn't a production-quality MySQL server that supports subqueries.
  • by Anonymous Coward
    I've been working through this book for quite some time, and now that I've extracted all i can I have to declare myself delighted with it. The examples are good, deep enough to convey the lessons but shallow enough that not too much is irrelevant. I now have, as the author promised, several applications that will compile easily under both linux and win32. If i can fault the book at all , my only reservation is that is would have been nice to see all the necessary software included on the cd. Downloading all
  • Interesting Book (Score:5, Insightful)

    by saberworks ( 267163 ) on Thursday February 05, 2004 @06:08PM (#8194910)
    I read most of this book (maybe an older version?) last year. I found it very interesting because it basically gave me the idea to let the staff members of my web site update the site through a windowed interface as opposed to a web interface. MySQL doesn't have to be running on the same computer as the program is running on, so this would be simple. That way you could provide a rich client (for staff members, not end-users) to update a web site based on MySQL.

    I know, it's not an original idea, but it's interesting because the book was a nice, step by step guide to doing just this. For what it's worth, I enjoyed it.

    On the other hand, I ended up spending time with XUL instead.
    • by gbrayut ( 715117 )
      Just wondering why you wanted to get away from the web interface? If done correctly, isn't a web interface much better then a client/app, since it provides a single interface that works on all operating systems and from all locations?
  • by anonymous coword ( 615639 ) on Thursday February 05, 2004 @06:08PM (#8194911) Homepage Journal
    It is an open source program similar to Microsoft Access [kexi-project.org]. It works with MySQL too. It even runs on Windows.
    • And its version 0.1 beta 2, which makes it practically vaporware in my book.

      Thats a little harsh of course... I am sure it will be available eventually (the screenshots look very promising) but at this stage it is only an interesting sidenote.
    • Rekall (Score:3, Interesting)

      by bstadil ( 7110 )
      Rekall [rekallrevealed.org] is another Access like Frontend that works with MySQL and a few others.

      They got shafted by TheKompany and need some help so download it a send a few bucks their way if you like it. Runs on Linux and Windows.

  • Silly comment (Score:3, Insightful)

    by Rosco P. Coltrane ( 209368 ) on Thursday February 05, 2004 @06:10PM (#8194933)
    MySQL: Building User Interfaces chose to include the full code listing for everything. This is both a blessing and a curse: readers have the code right in front of them and don't have to worry about being in front of a computer while reading the book

    Since when do people read computer books on the throne? I would think anybody who's interested in this book (yes, you two hiding at the back!) would be reading it in front of a computer, trying out the sample code to learn what's going on.
    • Since when do people read computer books on the throne?

      Since the last time I went to the throne? I also read them in the park, while in waiting rooms of various kinds and in bed.

      Sometimes it's ok just to think about the content.

  • I read this book (Score:3, Informative)

    by Anonymous Coward on Thursday February 05, 2004 @06:16PM (#8194995)
    Recently I had to write a mysql demo for a tradshow. I had
    never worked with mySQL before. I got this book and was
    able to complete a full fledged demo in a matter of three
    days, working part time. The book is very well organized,
    easy to read and understand and best of all the examples
    work without modifications. I highly recommend this book
    for beginners. I would have done so for all levels but
    I'm not an advanced user of mySQL.

    If you're thinking of getting started on mySQL this is the
  • Good book (Score:3, Funny)

    by TechnologyX ( 743745 ) on Thursday February 05, 2004 @06:17PM (#8195012) Journal
    I have this book on my desk currently, its definitely a good resource on using MySQL for programs. The only gripe I had with it was that it didn't come with the source code, like was said in the review. I like how it focuses on converting the VB programmer over to GTK conventions.

    Maybe someone should send Mike Rowe a copy after he gets out of Redmond-Training.
  • Yes but... (Score:2, Insightful)

    Would you *reallY* like users installing MySql on their machines with the easiest to use options (read:insecure options) by default? GUIs are much worse. Best to stick with raw SQL and text files, that way you *have* to learn to secure the system.
  • I'm sure the GTK and Glade solution works fine. But wouldn't Java, JDBC, plus a GUI builder ( even a freely downloadable Borland JBuilder Personal or now Eclipse.org has a GUI Builder ) be a lot more crossplatform and mature solution?

    There are also quite a few over the over-the-shelf Java JDBC components and tools that you can buy as well in case you're building a commercial application.

    To each his own I guess.

  • ...might be to use a higher level language wrapper like Ruby/GTK [sourceforge.net].

    Prototyping an app will probably take less time if you don't have the compile/link cycle... worth a try, anyhow.
  • by lawpoop ( 604919 ) on Thursday February 05, 2004 @06:38PM (#8195224) Homepage Journal
    Couldn't the author have made a little more recent comparison to database technologies? AFAIK, SQL server is at version 2k, and Access at version 2k3.
  • by t_pet422 ( 613073 ) on Thursday February 05, 2004 @06:43PM (#8195260) Homepage
    I don't get why so many people are stuck on MySQL. It's lacks some very, very basic features: Views, Triggers, Stored procedures, nested selects. Sure, they promise support for all this in future version, but PostgreSQL supports it NOW. If you want a full-featured open source database, don't use MySQL, use Postgres.
    • MySQL to Postgres is akin to the whole MP3 to OGG OR VHS to Beta.

      Sometimes technically better does not win out over market hold and saturation. One could (I am sure) publish a whole book on how MySQL got entrenched over a more feature laden database.
    • by Tassach ( 137772 ) on Thursday February 05, 2004 @07:00PM (#8195476)
      I too wonder about the inexplicable popularity of MySQL. It fills the microscopic niche between a lightweight ISAM database and a real full-featured relational database. I've yet to see MySQL used for something that couldn't have be done better with another tool.

      Postgres is pretty good, but still (IMHO) not yet up to the level of a commercial RDBMS. If you want a full-featured free-as-in-beer datacenter grade database, use Sybase [sybase.com]. It doesn't come with source, but come on now, how many MySQL zealots have ever even compiled from source, let alone modified something?

      • At least for my company, the primary reason for using MySQL is the native support for Windows. These other solutions are only currently supported in Linux (Postgres supports Windows only through Cwgwin).

    • Acutally, I have yet to need a "full-featured database". From what I've seen of various apps, neither do most other people. By and large, most apps needing a form of database storage usually get by with DBM or equivalent functionality. 'Real', big database applications that need the kind of stuff you mention are few and far between - and in those cases, there are plenty of alternatives anyhow, like you say.

      For me, MySQL is not a deficient implementation of the Likes of Oracle, but a full-featured, modern w
  • One minor correction (Score:2, Informative)

    by The Bungi ( 221687 )
    There's no such thing as "SQL Server 97". There's SQL Server 6.5, 7.0 and 2000. Perhaps he's referring to 7.0? Well perhaps he should have referred to the newest version instead.

    Not that I'd be interested in a comparison between MySQL and SQL Server (midrange C/S replacement for Access/FoxPro - OK. Enterprise RDBMS? No)... but still.

  • Move? (Score:4, Insightful)

    by ClosedSource ( 238333 ) on Thursday February 05, 2004 @06:45PM (#8195282)
    "If you are a Windows programmer looking to create or move your stand-alone database applications away from Microsoft-specific tools such as Visual Basic, Visual C++, Access or SQL Server, MySQL: Building User Interfaces is written just for you."

    Very few Windows applications are written in 'C' these days so converting an existing application to use MySQL would be pretty painful. You should have a better reason to port your code then simply avoiding MS tools.

    Perhaps the book is better suited for developers who wish to switch to Linux for future development.
  • by kahei ( 466208 ) on Thursday February 05, 2004 @07:28PM (#8195753) Homepage
    ...wouldn't the effort be better spent in actually bringing mySQL up to the point where it *can* replace SQL Server?

    MySQL seems to occupy a rather subtle and narrow niche, perhaps the 'single smallish website' niche. I can't really imagine wanting to use it when most applications are liable to grow beyond that niche.

    PostgresSQL looks a lot more encouraging, feature-wise, although it doesn't seem to offer many concrete benefits over SQL Server. Still, to me, a book on migrating to PostgresSQL or another full-featured RDB would be more useful.

    • you do have a good point, however have you ever tried to install PG on Windows? It's a bloody nightmare!
    • What are you talking about?

      MySQL and Postgres are both very good database technologies (and I'm an Oracle DBA, managing 3 high-availability Oracle installations).

      "MySQL seems to occupy a rather subtle and narrow niche"

      The website that you posted this comment to, that offered the review of this book, runs MySQL. You know - the website with it's own effect named after it, the one that handles the load of tens of thousands of geeks while the site they reference in a front-page-story crashes and burns when
  • by Mr. Cancelled ( 572486 ) on Thursday February 05, 2004 @07:48PM (#8195911)
    For a content management system I've developed, I prototyped all of the basic functionality by using Access as a GUI for mySQL. And I loved it! I actually considered doing the whole thing this way for a bit as it offered so many of Access's strengths (quick and powerful GUI building, familiar environment, everyone has it, etc.), but was combined with mySQL's stability, scalability (Well... For the needs of my target audience at least), and versatility. All's you need to tinker with this is the free MyODBC [mysql.com] package, and suddenly your mySQL database is seen as a standard ODBC one. You can build table relationships within Access using mySQL based source data. You can locate the mySQL server anywhere you want (local or remote), point Access at it, and there ya go. Additionally you can now use VBA within Access to take advantage of many Active-X components, as well as a wealth of freely available VB code. There were several reasons I went back to my original plan of just prototyping in Access, and deploying via a web-based setup:
    1. Obviously not everyone has Access. Many do, or have access to it via work or school (access to Access?!?)
    2. There were certain things that were easier to implement in an HTML-based setting (conversely, there's things I still can't equal that were accomplished easily using VB & Active-X. Things such as a customized file browser with a built in image viewer)
    3. While some of my VB code and Active-X'ing would have been transferable to the web, it would have required requiring that the user of my system use IE to administer it. Not gonna happen!
    4. I just don't like Microsoft enough to make my product only available to users of their software. The above IE example would have required my admins to IE; Access would require users to have Access; Having Access implies that the user must also run Windows (Wine just isn't there for Access usage I'm afraid. At least not for very advanced usage)
    But for other projects I have, who's target audience is Windows users, Access is a great way to quickly build some impressive mySQL-based applications. IMHO, of course. 8)=
    • Finally..some rational thought in here.

      I've used Access and/or VB to talk to a backend Oracle or SQLServer DB. Different office has needs for different views/functionality? Deploy them a different MDB, talking to the same tableset.
  • SwingSet [sourceforge.net] is an open source toolkit for writing database-aware/enabled Swing applications.
  • I hardly consider GTK+ + MySQL to even be in the same league as Access when it comes to ease of use and interface design. Sure, Access isnt that great of a program, but it is extremely easy to create a simple database+frontend in. Another nonfree alternative is Filemaker Pro. This is a very nice application.
  • Could someone explain to me the difference between the two? (I've had a database course, so it's OK to get technical) There was that top 10 database article a while back, and while I saw MS SQL in there a few times I NEVER saw MySQL. What is MySQL better than MS SQL at, and vice versa?

"No, no, I don't mind being called the smartest man in the world. I just wish it wasn't this one." -- Adrian Veidt/Ozymandias, WATCHMEN