考虑将下面代码中的URL分配给字符串,比如说
String link = "http://www.topix.com/rss/city/ellensburg-wa";
我应该如何使用以下代码中的字符串而不是URL本身。
注意:我是java的初学者
stmt.executeQuery("select url from urls where url='http://www.topix.com/rss/city/ellensburg-wa'");
stmtR.executeUpdate("insert into urls values(21211,'http://www.topix.com/rss/city/ellensburg-wa','source',1,0)"
答案 0 :(得分:7)
如果您想创建一个不错的查询,请使用prepared statement
PreparedStatement insertUrlStatement = con.prepareStatement("INSERT INTO urls VALUES(?, ?, ?, ?)");
//Replace the **first** "?" by an "id" variable content (containing an **int**)
insertUrlStatement.setInt(1, id);
//Replace the **second** "?" by the "url" variable content (containing a **String**)
insertUrlStatement.setString(2, url);
//Two other setXxx();
insertUrlStatement.executeUpdate()
答案 1 :(得分:2)
stmt.executeQuery("select url from urls where url='" + link + "'");
stmtR.executeUpdate("insert into urls values(21211,'" + link + "','source',1,0)"
+
是Java的字符串连接运算符
请参阅:http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html
如果要将其用于SQL查询,则应该考虑使用预准备语句(请参阅其他答案)。
答案 2 :(得分:1)
我必须在这个上给我2p。
永远不会 使用字符串连接和SQL。
(好吧,或许应该读作永远不会使用sting连接和用户输入)
遵循上面给出的关于使用预准备陈述的建议。
想想如果你使用字符串连接和SQL,当一些讨厌的用户输入链接时会发生什么
x'; DROP TABLE urls; --
您的代码看起来像
stmt.executeQuery("select url from urls where url='x'; DROP TABLE urls; --'");
严重的是,甚至不写一个做这个的原型,坏代码总是坏代码,最终会被使用。你不想因为编写十大漏洞之一而被解雇吗? www.drdobbs.com/web-development/224400744
转到此站点以获取更多示例以及SQL字符串连接为BAD的原因 http://unixwiz.net/techtips/sql-injection.html
答案 3 :(得分:0)
你可以这样做:
stmt.executeQuery("select url from urls where url='"+link+"'");