【问题标题】:get data from user then insert it in javadb从用户获取数据,然后将其插入 javadb
【发布时间】:2012-04-27 21:01:43
【问题描述】:

如果我有一个带有接口的代码,该接口从用户那里获取数据,然后将此数据存储在字符串类型的变量中,我如何将这个变量插入数据库中?这是我所说的一个例子:

String s1="user@hotmail.com";
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con=
 DriverManager.getConnection("jdbc:derby://localhost:1527/SampleDB","app","app");
Statement st=con.createStatement();
st.executeUpdate("INSERT INTO EMAIL"+"(ID)"+"VALUES(s1)");

但是这种方式行不通,不会在数据库中插入这个字符串类型的变量!

我该怎么做?

【问题讨论】:

  • 您的第一个问题是您没有连接变量,名称是实际字符串的一部分。你的第二个问题是你将用户提供的输入直接连接到你的 SQL 中,而不是使用准备好的语句——这会让你对 SQL 注入开放,所以不要这样做。

标签: java sql derby javadb


【解决方案1】:

使用PreparedStatemt。你可以在http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html找到一个例子

为了防止SQL injection,所有查询都应该被参数化并且 字符串连接不应该用于创建动态 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多