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);
}
}
程序運行結果:
數據庫結果: