<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
-->
    <head>
        <meta name="description" content="NetBeans documentation resources for working with a MySQL Database">
        <link rel="stylesheet" type="text/css" href="../../netbeans.css">

        <title>MySQL and NetBeans IDE</title>
    </head>

    <body>
        <h1>MySQL and NetBeans IDE</h1>

        <p>With NetBeans IDE, you can develop a wide range of applications that use MySQL
            databases. Below are two screencasts and various NetBeans tutorials that feature
            MySQL.</p>

        <ul>
            <li><a href="#gettingStarted">Getting Started with Database-Driven Applications using MySQL</a></li>
            <li><a href="#dbSupport">Database Support Improvements in NetBeans IDE 6.5</a></li>
            <li><a href="#tutorials">Tutorials</a></li>
        </ul>

        <h2 id="gettingStarted">Getting Started with Database-Driven Applications using MySQL</h2>

        <p>This 7-minute screencast demonstrates how you can get started developing database-driven
            applications using the NetBeans IDE. It describes how to connect to a MySQL server and
            work in the SQL editor by creating tables. It also shows how to interact with the tables
            in a desktop application, and how to expose tables using RESTful web services.</p>

        <br>
        <div id="flashContent"></div>
 <script src="/images_www/js/data_tables/js/jquery.dataTables.min.js" type="text/javascript"></script>
 <script src="/images_www/js/mediaplayer-5.2/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
var targetFile='http://bits.netbeans.org/media/netbeans-mysql.flv';
var pl = new SWFObject('/images_www/js/mediaplayer-5.2/player.swf','player','400','300','9');
pl.addParam('allowfullscreen','true');
pl.addParam('allowscriptaccess','always');
pl.addParam('flashvars','file='+targetFile+'&autostart=true');
pl.write('flashContent');
</script>

        
        <br>
        <h2 id="dbSupport">Database Support Improvements in NetBeans IDE 6.5</h2>

        <p>This 6-minute screencast demonstrates enhancements to database support in NetBeans 6.5.
            These include support for the Sakila database, improved support for MySQL, improvements
            to the SQL Editor, SQL code completion, displaying multiple rowsets, and SQL history.</p>

        <br>
        <div class="indent">
            <object id="flashObj" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0">
                <param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" />
                <param name="bgcolor" value="#FFFFFF" />
                <param name="flashVars" value="videoId=49570915001&playerID=1640183659&domain=embed&" />
                <param name="base" value="http://admin.brightcove.com" />
                <param name="seamlesstabbing" value="false" />
                <param name="allowFullScreen" value="true" />
                <param name="swLiveConnect" value="true" />
                <param name="allowScriptAccess" value="always" />
                <embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=49570915001&playerID=1640183659&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="480" height="376" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>
            </object>
        </div>

        <br>
        <h2 id="tutorials">Tutorials</h2>

        <p>The following tutorials all feature MySQL:</p>

        <ul>
            <li><a href="../docs/ide/mysql.html">Connecting to a MySQL Database</a></li>
            <li><a href="../docs/web/mysql-webapp.html">Creating a Simple Web Application Using a MySQL Database</a></li>
            <li><a href="../docs/web/jsf20-crud.html">Generating a JavaServer Faces 2.0 CRUD Application from a Database</a></li>
            <li><a href="../docs/php/wish-list-tutorial-main-page.html">Creating a CRUD Application with NetBeans IDE PHP Editor</a></li>
        </ul>

    </body>
</html>
