一聚教程网:一个值得你收藏的教程网站

热门教程

java连接mysql数据库的方法详解

时间:2022-06-29 03:13:40 编辑:袖梨 来源:一聚教程网

JDBC连接MySQL数据库

首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/
这是MySQL官方提供的连接方式:
解压后得到jar库文件,需要在工程中导入该库文件
我是用的是Eclipse:

 

JAVA连接MySQL稍微繁琐,所以先写一个类用来打开或关闭数据库:

 代码如下 复制代码

DBHelper.java


package com.hu.demo; 
 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
 
public class DBHelper { 
    public static final String url = "jdbc:mysql://127.0.0.1/student"; 
    public static final String name = "com.mysql.jdbc.Driver"; 
    public static final String user = "root"; 
    public static final String password = "root"; 
 
    public Connection conn = null; 
    public PreparedStatement pst = null; 
 
    public DBHelper(String sql) { 
        try { 
            Class.forName(name);//指定连接类型 
            conn = DriverManager.getConnection(url, user, password);//获取连接 
            pst = conn.prepareStatement(sql);//准备执行语句 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
 
    public void close() { 
        try { 
            this.conn.close(); 
            this.pst.close(); 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
    } 

再写一个Demo.java来执行相关查询操作

 代码如下 复制代码

package com.hu.demo; 
 
import java.sql.ResultSet; 
import java.sql.SQLException; 
 
public class Demo { 
 
    static String sql = null; 
    static DBHelper db1 = null; 
    static ResultSet ret = null; 
 
    public static void main(String[] args) { 
        sql = "select *from stuinfo";//SQL语句 
        db1 = new DBHelper(sql);//创建DBHelper对象 
 
        try { 
            ret = db1.pst.executeQuery();//执行语句,得到结果集 
            while (ret.next()) { 
                String uid = ret.getString(1); 
                String ufname = ret.getString(2); 
                String ulname = ret.getString(3); 
                String udate = ret.getString(4); 
                System.out.println(uid + "t" + ufname + "t" + ulname + "t" + udate ); 
            }//显示数据 
            ret.close(); 
            db1.close();//关闭连接 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
    } 
 

 测试数据库是在上一章 中建立的,所以直接查询:

 

例子二,java连接mysql数据库类文件

 代码如下 复制代码

package sns.team6.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 链接数据库的工具类
 *
 * @author 徐锐
 *
 */
public class DBHelper {

 // mysql驱动路径
 private static final String driver = "com.mysql.jdbc.Driver";
 // 数据库的连接路径
 private static final String url = "jdbc:mysql://localhost:3306/snsteam6";

 /**
  * 连接数据库的对象
  *
  * @return
  */
 public static Connection getConnection() {
  Connection conn = null;
  try {
   Class.forName(driver);
   conn = DriverManager.getConnection(url, "root", "root");
  } catch (Exception e) {
   e.printStackTrace();
  }
  return conn;
 }

 /**
  * 关闭打开的资源
  *
  * @param conn
  * @param pst
  * @param rst
  */
 public static void closeInfo(Connection conn, PreparedStatement pst,
   ResultSet rst) {
  try {
   if (rst != null) {
    rst.close();
    rst = null;
   }
   if (pst != null) {
    pst.close();
    pst = null;
   }
   if (conn != null) {
    conn.close();
    conn = null;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 /**
  * 获取结果集对象
  *
  * @param sql
  * @param params
  * @return
  */
 public static ResultSet resultSet(String sql, Object[] params) {

  // 数据库的链接对象
  Connection conn = null;
  // 数据库的操作对象
  PreparedStatement pst = null;
  // 结果对象
  ResultSet rst = null;
  try {

   // 数据库的链接对象
   conn = DBHelper.getConnection();
   // 数据库的操作对象
   pst = conn.prepareStatement(sql);
   // 判断是否有参数
   if (params != null && params.length > 0) {
    for (int i = 0; i < params.length; i++) {
     // 给操作对象赋值
     pst.setObject(i + 1, params[i]);
    }
   }
   // 获取结果对象
   rst = pst.executeQuery();
  } catch (SQLException e) {
   rst = null;
   e.printStackTrace();
  }
  return rst;
 }

 /**
  * 获取添加的结果对象
  *
  * @param sql
  * @param params
  * @return
  */
 public static boolean result(String sql, Object[] params) {

  boolean flag = false;
  // 数据库的链接对象
  Connection conn = null;
  // 数据库的操作对象
  PreparedStatement pst = null;
  try {
   // 数据库的链接对象
   conn = DBHelper.getConnection();
   // 数据库的操作对象
   pst = conn.prepareStatement(sql);
   // 判断是否有参数
   if (params != null && params.length > 0) {
    for (int i = 0; i < params.length; i++) {
     // 给操作对象赋值
     pst.setObject(i + 1, params[i]);
    }
   }
   // 获取结果对象,是int类型,表示执行成功的行数
   int row = pst.executeUpdate();
   if (row > 0) {
    // 如果大于0,表示执行成功
    flag = true;
   }
  } catch (SQLException e) {
   flag = false;
   e.printStackTrace();
  }
  return flag;
 }
}

例子

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
 
 
public class MysqlDemo {
    public static void main(String[] args) throws Exception {
        Connection conn = null;
        String sql;
        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
        // 避免中文乱码要指定useUnicode和characterEncoding
        // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
        // 下面语句之前就要先创建javademo数据库
        String url = "jdbc:mysql://localhost:3306/javademo?"
                + "user=root&password=root&useUnicode=true&characterEncoding=UTF8";
 
        try {
            // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
            // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
            Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
            // or:
            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
            // or:
            // new com.mysql.jdbc.Driver();
 
            System.out.println("成功加载MySQL驱动程序");
            // 一个Connection代表一个数据库连接
            conn = DriverManager.getConnection(url);
            // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
            Statement stmt = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
            if (result != -1) {
                System.out.println("创建数据表成功");
                sql = "insert into student(NO,name) values('2012001','陶伟基')";
                result = stmt.executeUpdate(sql);
                sql = "insert into student(NO,name) values('2012002','周小俊')";
                result = stmt.executeUpdate(sql);
                sql = "select * from student";
                ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
                System.out.println("学号t姓名");
                while (rs.next()) {
                    System.out
                            .println(rs.getString(1) + "t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
                }
            }
        } catch (SQLException e) {
            System.out.println("MySQL操作错误");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
 
    }
 
}

热门栏目