java串連mysql資料庫的方法詳解

來源:互聯網
上載者:User

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();
        }
 
    }
 
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.