// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

.NetBeans IDE Tutorials
************************************************
- link:overview-screencast_zh_CN.html[NetBeans IDE 8.0 概述]
- link:index_zh_CN.html[NetBeans IDE Tutorials]
- link:section_zh_CN.html[]
- link:oracle-db_zh_CN.html[从 NetBeans IDE 连接到 Oracle 数据库]
- link:java-db_zh_CN.html[使用 Java DB (Derby) 数据库]
- link:github_nb_screencast_zh_CN.html[使用 NetBeans IDE 设置 GitHub 资料库的视频]
- link:clearcase_zh_CN.html[在 NetBeans IDE 中使用 ClearCase 支持]
- link:cvs_zh_CN.html[在 NetBeans IDE 中使用 CVS 支持]
- link:git_zh_CN.html[在 NetBeans IDE 中使用 Git 支持]
- link:mercurial_zh_CN.html[在 NetBeans IDE 中使用 Mercurial 支持]
- link:mercurial-queues_zh_CN.html[在 NetBeans IDE 中使用 Mercurial 队列支持]
- link:subversion_zh_CN.html[在 NetBeans IDE 中使用 Subversion 支持]
- link:team-servers_zh_CN.html[在 NetBeans IDE 中使用团队开发服务器]
- link:platform-screencast_zh_CN.html[在 NetBeans Platform 6.9 上创建应用程序]
- link:install-and-configure-mysql-server_zh_CN.html[在 Windows 操作系统中设置 MySQL 数据库服务器]
- link:database-improvements-screencast_zh_CN.html[截屏视频：NetBeans IDE 中的数据库支持]
- link:mysql_zh_CN.html[连接 MySQL 数据库]
************************************************


