• 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

     

  • 相关阅读:
    PHP——下载图片到本地代码
    PHP接收GET中文参数乱码的原因及解决方案
    防止表单按钮多次提交
    网站页面自动跳转
    php--防止DDos攻击代码
    数据库日期查询存在的问题
    html局部页面打印
    php中::的使用
    php基础:define()定义常数函数
    百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
  • 原文地址:https://www.cnblogs.com/mengdd/p/3155219.html
Copyright © 2020-2023  润新知