2014年8月14日 星期四

Jdbcmysql

 兩個class Db Jdbcmysql


 package com;

import com.opensymphony.xwork2.ActionSupport;

public class Db extends ActionSupport {
    /**
     *
     */
    private int id ;
    private static final long serialVersionUID = 7562913232984175945L;

    public String execute() {
        Jdbcmysql j =new Jdbcmysql();
        j.SelectTable1();
        return SUCCESS;
      
    }
}






package com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

public class Jdbcmysql {
    private Connection con = null; // Database objects
    // 連接object
    private Statement stat = null;
    // 執行,傳入之sql為完整字串
    private ResultSet rs = null;
    // 結果集
    private PreparedStatement pst = null;
    // 執行,傳入之sql為預儲之字申,需要傳入變數之位置
    // 先利用?來做標示

    private String dropdbSQL = "DROP TABLE User ";

    private String createdbSQL = "CREATE TABLE User (" + "    id     INTEGER "
            + "  , name    VARCHAR(20) " + "  , passwd  VARCHAR(20))";

    private String insertdbSQL = "insert into User(id,name,passwd) "
            + "select ifNULL(max(id),0)+1,?,? FROM User";

    private String selectSQL = "select * from User ";

    public Jdbcmysql() {

    }

    // 建立table的方式
    // 可以看看Statement的使用方式
    public void createTable() {
        try {
            stat = con.createStatement();
            stat.executeUpdate(createdbSQL);
        } catch (SQLException e) {
            System.out.println("CreateDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }

    // 新增資料
    // 可以看看PrepareStatement的使用方式
    public void insertTable(String name, String passwd) {
        try {
            pst = con.prepareStatement(insertdbSQL);

            pst.setString(1, name);
            pst.setString(2, passwd);
            pst.executeUpdate();
        } catch (SQLException e) {
            System.out.println("InsertDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }

    // 刪除Table,
    // 跟建立table很像
    public void dropTable() {
        try {
            stat = con.createStatement();
            stat.executeUpdate(dropdbSQL);
        } catch (SQLException e) {
            System.out.println("DropDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }

    // 查詢資料
    // 可以看看回傳結果集及取得資料方式
    public void SelectTable() {
        try {
            stat = con.createStatement();
            rs = stat.executeQuery(selectSQL);
            System.out.println("ID\t\tName\t\tPASSWORD");
            while (rs.next()) {
                System.out.println(rs.getInt("id") + "\t\t"
                        + rs.getString("name") + "\t\t"
                        + rs.getString("passwd"));
            }
        } catch (SQLException e) {
            System.out.println("DropDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }
   
    public void SelectTable1() {
        try {

            // 註冊driver
            DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
            con = DriverManager.getConnection(
                            "jdbc:mysql://106.187.38.21:3306/ewallet","tintin","tintin");
       
            if(con!=null){
                stat = con.createStatement();
                rs = stat.executeQuery("SELECT * FROM transaction");
                System.out.println("ID source_id source_id type ");
                while (rs.next()) {
                    System.out.println(rs.getInt("id") + "\t\t"
                            + rs.getString("source_id") + "\t\t"
                            + rs.getString("type"));
                }
            }else{
                System.out.println("con=null");
               
            }
           
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
   
    }

    // 完整使用完資料庫後,記得要關閉所有Object
    // 否則在等待Timeout時,可能會有Connection poor的狀況
    private void Close() {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (stat != null) {
                stat.close();
                stat = null;
            }
            if (pst != null) {
                pst.close();
                pst = null;
            }
        } catch (SQLException e) {
            System.out.println("Close Exception :" + e.toString());
        }
    }

    /*
    public static void main(String[] args) {
        // 測看看是否正常
        Jdbcmysql test = new Jdbcmysql();
        test.dropTable();
        test.createTable();
        test.insertTable("yku", "12356");
        test.insertTable("yku2", "7890");
        test.SelectTable();

    }
    */
}

沒有留言:

張貼留言