JDBC之创建Statement

创建Statement

Statement用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象只能执行不带参数的简单SQL语句。
通过调用 Connection 对象的 createStatement 方法创建该对象,该对象用于执行静态的 SQL 语句,并且返回执行结果。
Java代码:

	Statement statement = connection.createStatement();

执行SQL语句

Statement 接口中定义了下列方法用于执行 SQL 语句:

  • ResultSet excuteQuery(String sql),用于执行查询语句,返回值是查询结果集;
  • int excuteUpdate(String sql),用于执行包括增删改在内的更新语句,返回值是更新语句影响的行数;
	String sql = "update user set name = 'jackma' where id = 1";
	int affectedRows = statement.executeUpdate(sql);

缺点

只支持静态sql语句,只能通过字符串拼接的方式来生成SQL语句,但是这样做存在SQL注入攻击的风险。

		String name = "jackma";
		String password = "123456' or '1'='1";
		String sql = "select * from user where name = '" + name
				+ "' and password= '" + password + "'";

通过Statement执行SQL语句

	//获取数据库连接
	Connection connection = JDBCTools.getConnection();
	//准备sql语句
	String sql = "update user set name='jackma' where id=1";
	//创建statement
	Statement statement = connection.createStatement();
	//执行更新语句
	int affectedRows = statement.executeUpdate(sql);

SQL注入攻击

攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,这类表单特别容易受到SQL注入式攻击。
造成SQL注入式攻击的根本原因是,用户输入的内容未经检验就直接用来拼接SQL
语句,所以防范SQL注入式攻击最简单的方法就是对用户的输入内容进行检验;或者使用支持预编译的Statement,即PreparedStatement。

参考资料:什么是SQL注入式攻击

猜你喜欢

转载自blog.csdn.net/zhuzhuxia2020/article/details/89298075
今日推荐