如何在java中插入SQL命令来删除表

如何在java中插入SQL命令来删除表,java,mysql,sql-server,jsp,jdbc,Java,Mysql,Sql Server,Jsp,Jdbc,我的SQL查询java代码是 String sqlSt="INSERT INTO users(id,name,place) values ("+null+",'"+request.getParameter("name")+"','"+request.getParameter("place")+"');"; 我试过了 name=a');删除表用户-- 以及 place=a');删除表用户-- 但它返回一个Ecxeption,如下所示 com.mysql.jdbc.exceptions.jdbc4

我的SQL查询java代码是

String sqlSt="INSERT INTO users(id,name,place) values ("+null+",'"+request.getParameter("name")+"','"+request.getParameter("place")+"');";
我试过了
name=a');删除表用户--
以及
place=a');删除表用户--

但它返回一个Ecxeption,如下所示

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在“DROP TABLE users;”--“附近使用的正确语法1号线的“钦奈”)


注意:当我在mysql命令行中尝试同样的方法时。成功了!!!!我不知道jdbc中发生了什么,请使用空字符串
'

最好使用事先准备好的语句来避免混淆

String sqlSt = "INSERT INTO users(id, name, place) values ('', ?, ?)";
PreparedStatement ps = null;
try {
    ps = connection.prepareStatement(query);
    ps.setString(1, request.getParameter("name"));
    ps.setString(2, request.getParameter("place"));
    ps.executeUpdate();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    ps.close();
}

真正的问题实际上是JDBC,如果您不告诉它,它只允许一个sql。 查看此问题了解更多信息:

但我也会试试这个名字=

a',''); DROP TABLE users; --
由于您在插入中指定了3列:

(id,name,place)
要使sql有效,您需要提供3个值,而不仅仅是2个

您还可以发送文本null,发送java null值是没有必要的,我甚至不知道它是如何工作的。我认为这可能更好:

String sqlSt="INSERT INTO users(id,name,place) values (null,'"+request.getParameter("name")+"','"+request.getParameter("place")+"');";

真正的问题在于您的查询。最好使用
PreparedStatement
执行查询。 您的代码应该是:

String sqlSt="INSERT INTO users(id,name,place) values (?,?,?)";
PreparedStatement pstmt = null;
try{
pstmt = dbConnection.prepareStatement(sqlSt);
pstmt.setString(1,null);
pstmt.setString(2,request.getParameter("name"));
pstmt.setString(3,request.getParameter("place"));
pstmt.executeUpdate();
}catch (Exception e) {
    e.printStackTrace();
} finally {
    pstmt.close();
}
如果不想使用
PreparedStatement
,只需删除最后一个
来自您的查询。
因此,您的查询将是:

String sqlSt="INSERT INTO users(id,name,place) values ("+null+",'"+request.getParameter("name")+"','"+request.getParameter("place")+"')";

请注意,查询中+的问题也可能来自名称“L'albatros”中的某个引号,例如,为什么不试试name=a和place=a’;删除表用户--哇!谢谢刚刚添加了允许在URL中进行多个查询的属性,它本身。。。。。工作!!
String sqlSt="INSERT INTO users(id,name,place) values ("+null+",'"+request.getParameter("name")+"','"+request.getParameter("place")+"')";