jdbc的常用接口

一般有三个接口 

1, Statement 能发送简单的 查询语句  ;不能防止sql注入 ;不能带参数 (动态参数必须拼接);是个基础的接口;

2, PreparedStatement 继承自Statement,防止sql注入,可以携带参数,最常用

3,  CallableStatement 继承自PreparedStatement, 由方法 prePareCall创建, 用于调用存储过程。

**********************

接口的方法有三个 

1. execute();    运行语句,返回布尔值 和数字  ,false 和数字 代表没有成功

2.  executeQuery(); 运行语句,返回查询结果集合 

3.  executeUpdate();  返回操作条数; update delete insert 操作使用;

**********************

查询集合结果:ResultSet接口

查询结果差不多首个数组一样的东西,可以调用next的方法;

对于的是get+各种类型方法;

**********************

代码实现

Statement

package com.testJDBC;

import java.sql.DriverManager;
import java.sql.SQLException;
// import java.sql.Statement;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;


public class TestJDBC {
	public static void main(String[] args) {
		Connection conn = null;
		Statement sm = null; // 此处的Statement 是接口 不是实现类;
		try {
			// 加载类资源
			Class.forName("com.mysql.jdbc.Driver");
			// 这个的Connection 会连接时间很长,所以的话,后面会使用线程池进行管理
			 conn = (Connection) DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=utf-8&useSSL=false",
					"root",
					"wangrong654688");
			 sm = conn.createStatement();
			 // 正常写sql
//			 String sql = "insert into t_user(username,pwd) value('lll',999)";
//			 sm.execute(sql);
			 // 需要拼接
//			 String nameString = "jkjkjk";
//			 String sql = "insert into t_user(username,pwd) value('"+ nameString +"',999)";
//			 sm.execute(sql);
			 // sql注入 删完了
//			 String id = "3 or 1=1";
//			 String sql = "delete from t_user where id=" + id;
//			 sm.execute(sql);
			 
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally {
			try {
				if(conn!=null) {
				conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
//			try {
//				if(sm!=null) {
//				sm.close();
//				}
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
			
			
		}
	}
}

PreparedStatement

package com.testJDBC;

import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
// import java.sql.Statement;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

public class TestJDBC {
	public static void main(String[] args) {
		Connection conn = null;
	//	Statement sm = null; // 此处的Statement 是接口 不是实现类;
		PreparedStatement ps = null;
		try {
			// 加载类资源
			Class.forName("com.mysql.jdbc.Driver");
			// 这个的Connection 会连接时间很长,所以的话,后面会使用线程池进行管理
			 conn = (Connection) DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=utf-8&useSSL=false",
					"root",
					"wangrong654688");
			// sm = conn.createStatement();
			 // 正常写sql
//			 String sql = "insert into t_user(username,pwd) value('lll',999)";
//			 sm.execute(sql);
			 // 需要拼接
//			 String nameString = "jkjkjk";
//			 String sql = "insert into t_user(username,pwd) value('"+ nameString +"',999)";
//			 sm.execute(sql);
			 // sql注入 删完了
//			 String id = "3 or 1=1";
//			 String sql = "delete from t_user where id=" + id;
//			 sm.execute(sql);
			 
			 
			 String sql = "insert into t_user(username,pwd,resTime) value(?,?,?)"; // ?占位符号
			 ps = conn.prepareStatement(sql);
			 ps.setObject(1, "张三" ); // 索引 从1开始
			 ps.setObject(2, "3333");
			 ps.setObject(3, new java.sql.Date(System.currentTimeMillis()));  // Date 使用java.sql.Date
			 ps.execute();
			System.out.println("插入成功");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally { // 关闭原则 先进后关
			
//			try {
//				if(sm!=null) {
//				sm.close();
//				}
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
			try {
				if(ps!=null) {
				ps.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if(conn!=null) {
				conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
}

PreparedStatement 和 ResultSet 混合使用

package com.testJDBC;

import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
// import java.sql.Statement;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

public class TestJDBC {
	public static void main(String[] args) {
		Connection conn = null;
	//	Statement sm = null; // 此处的Statement 是接口 不是实现类;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 加载类资源
			Class.forName("com.mysql.jdbc.Driver");
			// 这个的Connection 会连接时间很长,所以的话,后面会使用线程池进行管理
			 conn = (Connection) DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=utf-8&useSSL=false",
					"root",
					"wangrong654688");
			// sm = conn.createStatement();
			 // 正常写sql
//			 String sql = "insert into t_user(username,pwd) value('lll',999)";
//			 sm.execute(sql);
			 // 需要拼接
//			 String nameString = "jkjkjk";
//			 String sql = "insert into t_user(username,pwd) value('"+ nameString +"',999)";
//			 sm.execute(sql);
			 // sql注入 删完了
//			 String id = "3 or 1=1";
//			 String sql = "delete from t_user where id=" + id;
//			 sm.execute(sql);
			 
			 
//			 String sql = "insert into t_user(username,pwd,resTime) value(?,?,?)"; // ?占位符号
//			 ps = conn.prepareStatement(sql);
//			 ps.setObject(1, "张三555" ); // 索引 从1开始
//			 ps.setObject(2, "3333");
//			 ps.setObject(3, new java.sql.Date(System.currentTimeMillis()));  // Date 使用java.sql.Date
//			 ps.execute();
			 String sql = "select username,pwd,resTime from t_user where id>? "; // ?占位符号
			 ps = conn.prepareStatement(sql);
			 ps.setObject(1, 2);
			 rs = ps. executeQuery();
			 while(rs.next()) {
				System.out.println(rs.getString(1)+"___"+rs.getString(2)+"____"+rs.getDate(3)); 
			 }
			System.out.println("成功");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally { // 关闭原则 先进后关
			
//			try {
//				if(sm!=null) {
//				sm.close();
//				}
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
			try {
				if(rs!=null) {
				rs.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			try {
				if(ps!=null) {
				ps.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if(conn!=null) {
				conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
}
发布了189 篇原创文章 · 获赞 10 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/wangrong111222/article/details/104078414
今日推荐