JAVA+SQL SERVER 推箱子小游戏

day2 数据库连接2

package db;

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

import javax.swing.JOptionPane;
//设定InsertMessage类,声明该类的参数num、time、id
public class InsertMessage {
	int num;
	int time;
	String id;
	//
	public InsertMessage(int num, int time, String id) {
		this.num=num;
		this.time=time;
		this.id=id;
	}
	//成员函数insert调用 DBUtil类中的getConnection函数
	public void insert(){
		Connection con = DBUtil.getConnection();
		//在使用statement获取jdbc访问时所具有的一个共通的问题是输入适当格式的日期和时间戳:2021-07-023 20:56 或者 21/07/23 8:56 pm。 通过使用java.sql.preparedstatement,这个问题可以自动解决。
		PreparedStatement pstmt;
		try {
		//insert into 数据库.表名
			String sql="insert into adie.dbo._rank values('"+id+"',"+num+","+time+")";
			pstmt = con.prepareStatement(sql);
			pstmt.executeUpdate();
			pstmt.close();
			con.close();
			JOptionPane.showMessageDialog(null, "录入成功,可通过排行榜查看您的成绩");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

号外

PreparedStatement

l 它是Statement接口的子接口;

l 强大之处:

Ø 防SQL攻击;

Ø 提高代码的可读性、可维护性;

Ø 提高效率!

l 学习PreparedStatement的用法:

Ø 如何得到PreparedStatement对象:

¨ 给出SQL模板!

¨ 调用Connection的PreparedStatement prepareStatement(String sql模板);

¨ 调用pstmt的setXxx()系列方法sql模板中的?赋值!

¨ 调用pstmt的executeUpdate()或executeQuery(),但它的方法都没有参数。

l 预处理的原理

Ø 服务器的工作:

¨ 校验sql语句的语法!

¨ 编译:一个与函数相似的东西!

¨ 执行:调用函数

Ø PreparedStatement:

¨ 前提:连接的数据库必须支持预处理!几乎没有不支持的!

¨ 每个pstmt都与一个sql模板绑定在一起,先把sql模板给数据库,数据库先进行校验,再进行编译。执行时只是把参数传递过去而已!

¨ 若二次执行时,就不用再次校验语法,也不用再次编译!直接执行!

安全性

PreparedStatement在连接数据库时安全性非常高

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值