JDBC學習筆記(4)—PreparedStatement執行SQL語句

1.PreparedStatement與PreparedStatement區別

PreparedStatement和Statement的區別主要有三個:
(1)PreparedStatement比Statement效率高。
(2)語法不一樣。                                                                
(3)PreparedStatement數據更安全,可以防止mysql注入。

2.PreparedStatemnt執行DML語句

2.1數據庫連接代碼

package com.JDBC;

import java.sql.*;
public class JDBCconnection {
    private String url="jdbc:mysql://localhost:3306/user";
    private String user="root";
    private String password="123456";
    private Connection conn=null;
    private PreparedStatement ps=null;
    private ResultSet rs=null;
    public Connection getConn() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
        return conn;
    }
    public void close(PreparedStatement ps,Connection conn) {
        if(ps!=null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public void close(ResultSet rs,PreparedStatement ps,Connection conn) {
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(ps!=null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

2.2插入數據

package com.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DMLPSInsert extends JDBCconnection{
    private Connection conn=null;
    private PreparedStatement ps=null;
    public void insert() throws ClassNotFoundException, SQLException {
        //數據庫連接
        conn=super.getConn();
        //編寫SQL語句
        String sql="insert into login(username,password) values(?,?)";
        //執行預編譯SQL語句
        ps=conn.prepareStatement(sql);
        //設置參數
        ps.setString(1, "zzw");
        ps.setString(2, "234567");
        int count=ps.executeUpdate();
        System.out.println(count);
        if(count>0) {
            System.out.println("數據插入成功!");
        }else {
            System.out.println("數據插入失敗!");
        }
        super.close(ps, conn);
    }
}

程序運行結果:

程序運行結果

數據庫結果:

數據庫結果

2.3更新數據

package com.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DMLPSUpdate extends JDBCconnection{
    private Connection conn=null;
    private PreparedStatement ps=null;
    public void update() throws ClassNotFoundException, SQLException {
        //數據庫連接
        conn=super.getConn();
        //編寫SQL語句
        String sql="update login set password=? where username=?";
        //執行預編譯SQL語句
        ps=conn.prepareStatement(sql);
        //設置參數
        ps.setString(1, "hahaha");
        ps.setString(2, "zzw");
        int count=ps.executeUpdate();
        System.out.println(count);
        if(count>0) {
            System.out.println("數據更新成功!");
        }else {
            System.out.println("數據更新失敗!");
        }
        super.close(ps, conn);
    }
}

程序運行結果:

程序運行結果

數據庫結果:

數據庫結果

2.4刪除數據

package com.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DMLPSDelete extends JDBCconnection{
    private Connection conn=null;
    private PreparedStatement ps=null;
    public void delete() throws ClassNotFoundException, SQLException {
        //數據庫連接
        conn=super.getConn();
        //編寫SQL語句
        String sql="delete from login where username=?";
        //執行預編譯SQL語句
        ps=conn.prepareStatement(sql);
        //設置參數
        ps.setString(1, "zzw");
        int count=ps.executeUpdate();
        System.out.println(count);
        if(count>0) {
            System.out.println("數據刪除成功!");
        }else {
            System.out.println("數據刪除失敗!");
        }
        super.close(ps, conn);
    }
}

程序運行結果:

程序運行結果

數據庫結果:

數據庫結果

3.PreparedStatment執行DQL語句

  package com.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DQLPSselect extends JDBCconnection{
    protected Connection conn=null;
    protected PreparedStatement ps=null;
    protected ResultSet rs=null;
    public void selectAll() throws ClassNotFoundException, SQLException {
        //數據庫連接
        conn=super.getConn();
        //編寫SQL語句
        String sql="select * from login";
        //預編譯SQL語句
        ps=conn.prepareStatement(sql);
        ResultSet rs=ps.executeQuery(sql);
        while(rs.next()) {
            System.out.println("用列名稱取值: id:"+rs.getInt("id")+" username:"+rs.getString("username")+" password:"+rs.getString("password"));
            System.out.println("用索引取值:  id:"+rs.getInt(1)+" username:"+rs.getString(2)+" password:"+rs.getString(3));
        }
        super.close(rs, ps, conn);
    }
}

程序運行結果:

程序運行結果

數據庫結果:

數據庫結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章