如何使用jdbc 连接数据库

因为刚开始学,但是时间比较紧,故想问问有没有人给出一个详细的做法,谢谢

这种事情,百度一下你就知道了

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;

/**

  • ClassName: DBHelper

  • Description: 数据库连接

  • Author: MylesZelic@outlook.com

  • Date: 2015年12月29日

    */
    public class DBHelper {

    private final static String DRIVER = "com.mysql.jdbc.Driver";
    private final static String URL = "jdbc:mysql://localhost:3306/mscpdb";
    private final static String USER = "root";
    private final static String PASSWORD = "abc123";

    private Connection conn = null;
    private PreparedStatement pst = null;
    private ResultSet rst = null;
    private Result result = null;

    /**

    • 获取数据库连接
    • @return
    • @throws SQLException */ public Connection getConnection() throws SQLException { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return DriverManager.getConnection(URL, USER, PASSWORD); }

    /**

    • 执行增,删,改的sql语句
    • @param sql
    • @param objs
    • @return
    • @throws SQLException
      */
      public int executeUpdate(String sql, Object... objs) throws SQLException {
      int status = -1;
      conn = this.getConnection();
      pst = conn.prepareStatement(sql);

      if (objs != null) {// 判断参数是否为空
      if (objs.length > 0) {// 判断参数个数是否大于0
      int idx = 1;
      for (Object obj : objs) {// 循环遍历每一个参数
      pst.setObject(idx, obj);// 为参数占位符赋值
      idx++;
      }
      }
      }
      status = pst.executeUpdate();// 执行语句
      return status;// 返回执行结果以后受影响的行数
      }

    /**

    • 执行有返回集的语句
    • @param sql
    • @param objs
    • @return
    • @throws SQLException
      */
      public Result getResult(String sql, Object... objs) throws SQLException {
      conn = this.getConnection();
      pst = conn.prepareStatement(sql);

      if (objs != null) {// 判断参数是否为空
      if (objs.length > 0) {// 判断参数个数是否大于0
      int idx = 1;
      for (Object obj : objs) {// 循环遍历每一个参数
      pst.setObject(idx, obj);// 为参数占位符赋值
      idx++;
      }
      }
      }

      this.rst = pst.executeQuery();
      // 通过ResultSupport对象的toResult方法获取result对象
      this.result = ResultSupport.toResult(rst);
      return this.result;
      }

    /**

    • 事务处理
    • @param sqlList
    • @param objsList
    • @return
      */
      public int transaction(List sqlList, List objsList) {
      int status = -1;
      try {
      conn = this.getConnection();
      conn.setAutoCommit(false);// 取消自动提交功能
      if (sqlList != null) {
      if (sqlList.size() > 0) {
      for (int i = 0; i < sqlList.size(); i++) {
      String sql = sqlList.get(i);
      Object[] objs = objsList.get(i);
      pst = conn.prepareStatement(sql);
      if (objs != null) {
      if (objs.length > 0) {
      int idx = 1;
      for (Object obj : objs) {// 循环遍历每一个参数
      pst.setObject(idx, obj);// 为参数占位符赋值
      idx++;
      }
      }
      }
      pst.execute();
      }
      }
      }
      status = 1;
      conn.commit();// 提交事务
      } catch (SQLException e) {
      // 发生错误,回滚事务
      try {
      conn.rollback();
      } catch (SQLException e1) {
      e1.printStackTrace();
      }
      e.printStackTrace();
      } finally {
      try {
      if (pst != null) {
      pst.close();
      }
      if (conn != null) {
      conn.close();
      }
      } catch (SQLException e) {
      e.printStackTrace();
      }
      }

      return status;
      }

    /**

    • 关闭数据库资源
    • @throws SQLException */ public void CloseAll() throws SQLException { if (rst != null) { rst.close(); } if (pst != null) { pst.close(); } if (conn != null) { conn.close(); } } }

初学,在这里问这个问题是问不出来什么名堂的,自己下载视频去看看就有了。百度到的可能理解有难度,还是最好找视频,有讲解理解一下

这一大堆啥玩意啊,连个停顿都没有

我的github上有关于连接所有数据库的一个工具类(包括Oracle,MySQL,SQL server) 名字是huangyidong999 。

例子:


import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.mysql.jdbc.Connection;

public class JDBCOperation {

    private static Connection conn = null;

    public JDBCOperation(String jdbc) throws ClassNotFoundException, SQLException {
        initConn(jdbc);
    }

    private void initConn(String jdbc) throws ClassNotFoundException, SQLException {

        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/test";
        String username = "root";
        String password = "root";
        Class.forName(driver); // classLoader,加载对应驱动
        conn = (Connection) DriverManager.getConnection(url, username, password);
    }

    public List<Map<String, Object>> queryMapList(String sql){
        java.sql.Statement stmt = null;
        ResultSet rs = null;
        try {
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            ResultSetMetaData data = rs.getMetaData();
            List<Map<String, Object>> al = new ArrayList<Map<String, Object>>();
            while (rs.next()) {
                HashMap<String, Object> map = new HashMap<String, Object>();
                for (int i = 1; i <= data.getColumnCount(); i++) {// 数据库里从 1 开始
                    String c = data.getColumnName(i);
                    Object v = rs.getObject(i);
                    map.put(c, v);
                }
                al.add(map);
            }
            return al;
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                /*if(conn!=null&&!conn.isClosed()){
                    conn.close();
                }*/
                if(rs!=null&&!rs.isClosed()){
                    rs.close();
                }
                if(stmt!=null&&!stmt.isClosed()){
                    stmt.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }  
        }
        return null;
    }
    public int execute(String sql){
        int count = 0;
        PreparedStatement pstmt=null;
        try {
            pstmt = (PreparedStatement) conn.prepareStatement(sql);
            count = pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                /*if(conn!=null&&!conn.isClosed()){
                    conn.close();
                }*/
                if(pstmt!=null&&!pstmt.isClosed()){
                    pstmt.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return count;
    }
    /**
     * 需手动调用
     */
    public void closeConn(){
        try {
            if(conn!=null&&!conn.isClosed()){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}