用 ResultSet代替Statement执行curd

package com.fill.jweb_jdbc_new;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

public class jdbcDemo {
	public final static String URL="jdbc:mysql://127.0.0.1:3308/test";
	public final static  String USERNAME="root";
	public final static  String PWD="root";
	/**
	 * jdbc操作数据库
	 * 用ResultSet接口来处理结果集
	 *  eg:
	 *  ResultSet executeQuery(String sql)throws SQLException
	 *  ResultSet常用方法:
	 *   boolean next()
	 *   int getInt();
	 *   Date getDate();
	 *   String getString();
	 */
	public static void query(){
		//用ResultSet接口来获取结果
		try {
			//1.加载数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			//2.获取数据库链接

			Connection conn=(Connection) DriverManager.getConnection(URL, USERNAME, PWD);
			
			//3.构造sql语句
			String sql="select * from  admin_sql_inject where 1 limit 3";
			//4.构造一个statement实例(发送sql语句的载体)
			Statement stat=(Statement) conn.createStatement();
			//5.执行sql语句(其实是实现发送)
			ResultSet rs=stat.executeQuery(sql);//此时结果还是放在数据库的
			while(rs.next()){
				System.out.println(rs.getString("name")+"=="+rs.getString("pwd")+"<br>");
			}
			//6.关闭连接
			rs.close();
			stat.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	/*
	 * insert避免拼字符串问题以及拼接时的安全问题.
	 * PreparedStatement接口(预编译的sql语句)实现多次高效地使用sql
	 * 语句(会对sql语句作缓存)
	*/
	public static void insert(Admin p){
		
		try {
			//1.加载数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			//2.获取数据库链接

			Connection conn=(Connection) DriverManager.getConnection(URL, USERNAME, PWD);
			
			//3.构造sql语句
			String sql="insert into admin_sql_inject(name,pwd)values(?,?)";
			//4.构造一个statement实例(发送sql语句的载体)
			//Statement stat=(Statement) conn.createStatement();
			PreparedStatement ps=(PreparedStatement) conn.prepareStatement(sql);
			ps.setString(1,p.getName());
			ps.setString(2,p.getPwd());
			//5.执行sql语句(其实是实现发送)
			ps.executeUpdate();
			//6.关闭连接
			ps.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Admin a=new Admin("对的对的","jiushijiushi");
		//System.out.println(a.getName()+'-'+a.getPwd());
		insert(a);
	}

}
/*
 * PreparedStatement小结
 * 在jdbc应用中,应该始终以PreparedStatement代替Statement,即在任何时候都
 * 不用Statement原因如下:
 * a.代码的可读性和可维护性
 * b.PreparedStatement尽最大可能提高性能
 * c.是最重要的一点是极大的提高了安全性
 */


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值