JDBC连接MySQL 方法 实例及资料收集

JDBC连接MySQL 方法 实例及资料收集

 

准备工作

  首先,安装MySQL,配置用户名和密码,创建数据库。

  可参见之前的文章:

  http://www.cnblogs.com/mengdd/p/3154638.html

  http://www.cnblogs.com/mengdd/p/3154922.html

 

准备驱动包

  要用JDBC连接MySQL,需要一个驱动包:

  可以去这里下载(其实完整安装MySQL后可以在安装路径中找到这个包):

  http://www.mysql.com/products/connector/

  解压后将其中的mysql-connector-java-XXX-bin.jar文件加入到Web Project的lib中:

 

JDBC代码编写

  首先,需要加载驱动:

// 加载驱动
Class.forName("com.mysql.jdbc.Driver");

 

  然后,建立连接:

String dbUrl = "jdbc:mysql://localhost:3306/mydatabase1";
String dbUser = "your_username";
String dbPwd = "your_password";
// 打开数据库连接
con = DriverManager.getConnection(dbUrl, dbUser, dbPwd);

  

  注意其中的端口号和数据库名(mydatabase1)可能需要修改。

  JDBC连接不同数据库:

  

  之后就可以执行SQL语句了。

  最后要记得关闭资源。

 

实践程序

  完整Helper类代码(感谢ZJL同学无私奉献悉心指导):

package com.meng.utils;

import java.sql.*;

public class JDBCHelper
{
    private Connection con = null;
    private PreparedStatement stmt = null;
    private ResultSet rs = null;

    public JDBCHelper()
    {

        try
        {
            // 加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            String dbUrl = "jdbc:mysql://localhost:3306/mydatabase1";
            String dbUser = "mengdd";
            String dbPwd = "881103";
            // 打开数据库连接
            con = DriverManager.getConnection(dbUrl, dbUser, dbPwd);

        }
        catch (ClassNotFoundException e)
        {
            System.out.println("Error: unable to load driver class!");
            System.out
                    .println("please check if you hava the mysql-connector jar file in your lib dir!");
            e.printStackTrace();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }

    }

    public ResultSet executeResultSet(String sql)
    {
        return executeResultSet(sql, null);
    }

    public ResultSet executeResultSet(String sql, Object[] params)
    {
        try
        {
            // 创建一个JDBC声明
            stmt = con.prepareStatement(sql);
            if (null != params && params.length != 0)
            {
                for (int i = 0; i < params.length; i++)
                {
                    stmt.setObject(i + 1, params[i]);
                }
            }
            rs = stmt.executeQuery();
            return rs;
        }
        catch (Exception ex)
        {
            throw new RuntimeException(ex.getMessage(), ex);
        }
    }

    public int executeUpdate(String sql)
    {
        return executeUpdate(sql, null);
    }

    public int executeUpdate(String sql, Object[] params)
    {
        try
        {
            // 创建一个JDBC声明
            stmt = con.prepareStatement(sql);
            if (null != params && params.length != 0)
            {
                for (int i = 0; i < params.length; i++)
                {
                    stmt.setObject(i + 1, params[i]);
                }
            }
            return stmt.executeUpdate();
        }
        catch (Exception ex)
        {
            throw new RuntimeException(ex.getMessage(), ex);
        }
    }

    public void close()
    {
        try
        {
            // 应该明确地关闭所有的数据库资源
            if (null != rs)
                rs.close();
            if (null != stmt)
                stmt.close();
            if (null != con)
                con.close();

        }
        catch (SQLException e)
        {
            throw new RuntimeException(e);
        }

    }
}

 

  测试代码:

package com.meng.test;

import java.sql.ResultSet;
import java.sql.SQLException;

import com.meng.utils.JDBCHelper;

public class Test
{
    public static void main(String[] args)
    {
        JDBCHelper dbHelper = new JDBCHelper();

        ResultSet resultSet = dbHelper.executeResultSet("SELECT * FROM pet;");

        try
        {
            while (resultSet.next())
            {
                System.out.println("-------------");
                System.out.println("name: " + resultSet.getString("name"));
                System.out.println("birth: " + resultSet.getString("birth"));

            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            dbHelper.close();
        }

    }

}

 

  结果:

-------------
name: Tutu
birth: 2013-03-01
-------------
name: Whistler
birth: 1997-12-09
-------------
name: WangWang
birth: 2008-09-30
-------------
name: MiaoMiao
birth: 2012-01-01

 

 

参考资料

  官方文档:

  Java SE Technologies – Database

  http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136101.html

  JDBC Overview

  http://www.oracle.com/technetwork/java/overview-141217.html

  JDBC API

  http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/

  Tutorial JDBC basic

  http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

  Getting Started:

  http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html

 

  The JDBC classes are contained in the Java package java.sql and javax.sql

  JDBC教程:

  http://www.yiibai.com/jdbc/jdbc-db-connections.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值