① java中如何解决sql 注入漏洞
1、对传递过来的参数值段做过滤处理 包含sql操作关键字的干掉!当然这个要符合你的业务需求
2、不要对sql语句做拼接处理 可以用类似 jdbc中的preparestatement动态sql技术 生成sql
3、对传递进来的参数值做字符串转义 'sql do some' 让数据库把这段当成一段字符串处理 而不进行操作编译
② JAVA方法,SQL语句模糊查询
这问题很眼熟
也可以这样:
String sql="select * from ARITCLE where type="+type+" and title like "++" and writer like "+writer+"";
改成
String sql="select * from ARITCLE where type="+type+" and title like '%"++"%' and writer like '%"+writer+"'%";
如果writer 这些参数是用户输入而且不经过处理的话
拼接字符串生成查询语句,会使SQL注入攻击变得相当容易
③ Java如何对sql语句进行转义
不需要转义,因为sql是预编译的
④ java拼sql遇到了关于" ' "符号转义的问题。
首先将你的值字符串替换下 也就是转一下
例如你的值是str
str = str.replace("'", "''");
⑤ Java调用SQL存储过程、事务
例示一个不带参数的简单存储过程。多数存储过程的功能比本例复杂多了,但这里主要说明存储过程的一些基本要点。如前面所述,不同DBMS定义存储过程的语法是不同的。例如,有些DBMS使用begin
.
.
.
end或其他关键字指明存储过程定义的开始和结束。在有些DBMS中,下面的SQL语句可创建一个存储过程:
create
procere
SHOW_SUPPLIERS
as
select
SUPPLIERS.SUP_NAME,
COFFEES.COF_NAME
from
SUPPLIERS,
COFFEES
where
SUPPLIERS.SUP_ID
=
COFFEES.SUP_ID
order
by
SUP_NAME
下面的代码将SQL语句放到一个字符串中,然后赋给变量createProcere以备后用:
String
createProcere
=
"create
procere
SHOW_SUPPLIERS
"
+
"as
"
+
"select
SUPPLIERS.SUP_NAME,
COFFEES.COF_NAME
"
+
"from
SUPPLIERS,
COFFEES
"
+
"where
SUPPLIERS.SUP_ID
=
COFFEES.SUP_ID
"
+
"order
by
SUP_NAME";
下面的代码段使用Connection对象con来创建Statement对象,用于把创建存储过程的SQL语句发送给数据库:
Statement
stmt
=
con.createStatement();
stmt.executeUpdate(createProcere);
存储过程SHOW_SUPPLIERS将作为一个可调用的数据库对象在数据库中编译并存储,调用时就像调用其他方法一样。
⑥ 在java中如何将String类型转换成java.sql.Date类型
在java.sql.Date类中有一个叫valueOf(String s)的方法,它返回的方法就是你要的类型,不过它对传入的String s有一定的显示,必须是“yyyy-mm-dd”格式的数据。如果不是制定格式的数据,他会抛出“IllegalArgumentException”的异常。
java api中是如下解释(我用的api是1.6版的)
valueOf
public static Date valueOf(String s)将 JDBC 日期转义形式的字符串转换成 Date 值。
参数:
s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象
返回:
表示给定日期的 java.sql.Date 对象
抛出:
IllegalArgumentException - 如果给定日期不是 JDBC 日期转义形式 (yyyy-mm-dd)
⑦ 请问java中用string拼SQL如何转义单引号
用replaceAll替换v1,v2即可。具体写法如下
v1=v1.replaceAll("'","''");
v2=v2.replaceAll("'","''");
就是把一个单引号替换成两个单引号。
⑧ 我的JAVAWEB工程SQL语句在MYSQL中可以正确执行,但是在TOMCAT里却报错,求助解答~~~
maven项目就clean、install,然后重启项目
重启项目
如果还不行就清除网页缓存
以上是你曾经在idea中输入过错误SQL语句(后来在MYSQL中调试成功了)时首先可以选择的做法
下面是没有修改过的可选做法
查看配置文件,数据库是否连通
查看数据库版本
仔细检查语法,尤其是逗号。
⑨ 急求~~~在java中怎么实现sql中的存储过程啊~
java.sql
接口 CallableStatement
public interface CallableStatementextends PreparedStatement用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,则必须将其注册为 OUT 型参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个参数的编号是 1。
{?= call <procere-name>[<arg1>,<arg2>, ...]}
{call <procere-name>[<arg1>,<arg2>, ...]}
IN 参数值是使用从 PreparedStatement 中继承的 set 方法设置的。在执行存储过程之前,必须注册所有 OUT 参数的类型;它们的值是在执行后通过此类提供的 get 方法检索的。
CallableStatement 可以返回一个 ResultSet 对象或多个 ResultSet 对象。多个 ResultSet 对象是使用从 Statement 中继承的操作处理的。
为了获得最大的可移植性,某一调用的 ResultSet 对象和更新计数应该在获得输出参数的值之前处理。
去看看java API吧
⑩ java如何拼接sql语句
你咋不试试,
String columnStr;
String valueStr;
for(int i=0; i<columns.length; i++){
columnStr = "(" + columns[i] + ",";
valueStr = "'( \"" + value[i] + ",";
}
参考JAVA转义字符。网络一下吧。你自己试试,我这里没装jdk,懒得弄了,准备休息了。