【问题标题】:How to insert values to a table from user input [closed]如何从用户输入向表中插入值[关闭]
【发布时间】:2014-12-04 16:41:52
【问题描述】:

我在 PostgreSQL 中创建了一个数据库,并成功地在它们之间创建了连接,并且还从 Java 源代码创建了表。

我的问题是如何将来自用户输入的值插入到这些表中。 我已经在 google 上进行了足够多的搜索,但没有找到可以真正解释我需要做什么的东西。

【问题讨论】:

  • 您能否提供更多信息,例如您正在使用的库以及一些代码 sn-ps?
  • 我使用标准 JDK 库以及 postgresql-9.3-1102.jdbc3.jar 文件以便能够建立连接。

标签: java sql postgresql jdbc


【解决方案1】:

https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

   try (PreparedStatement pstmt = con.prepareStatement("INSERT INTO employees VALUES (?,?)")) {

     pstmt.setBigDecimal(1, inputFromUser) <---- injection safe
     pstmt.setInt(2, inputFromUser) <---- injection safe
     ...
   } // Auto close.

最重要的是使用prepared statements的问号而不是字符串concat,concat允许用户将sql注入到你的查询中。

【讨论】:

    【解决方案2】:

    在您处理用户输入的方法中,您可以执行 INSERT 或 UPDATE 查询。这是来自docs 的修改示例:

    Statement st = conn.createStatement();
    String query_st = "INSERT INTO user_info_table VALUES ('"+user_id+"', '"+age+"', "+height+");";
    ResultSet rs = st.executeQuery(query_st);
    while (rs.next())
    {
       System.out.print("Column 1 returned ");
       System.out.println(rs.getString(1));
    } rs.close();
    st.close(); 
    

    这假设您有一个包含三列的表“user_into_table”。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多