繁体   English   中英

如何使用变量将数据放入jdbc表?

[英]How can I put data into my jdbc table using a variable?

我想将用户放置的信息存储到变量var1中。 用户输入他的名字,然后var1使用getText()从文本字段中获取它。 每当程序在数据库表中执行时,我都想存储此信息。我正在尝试此代码。 请帮我。

            public void database(){
  String jdbcUrl = "jdbc:postgresql://localhost:5432/postgres";
      String username = "";
  String password = "";

 Connection conn = null;
  Statement stmt = null;
  ResultSet rs=null;


 try {
   // Step 1 - Load driver
      // Class.forName("org.postgresql.Driver"); // Class.forName() is not 
      needed 
since JDBC 4.0

  // Step 2 - Open connection
     conn = DriverManager.getConnection(jdbcUrl, username, password);

       // Step 3 - Execute statement
      stmt = conn.createStatement();
         stmt.executeUpdate("INSERT INTO players (name,fitore) VALUES 
    (var1,0)");

     } catch (SQLException e) {
   e.printStackTrace();
 }
 }

这给了我这个错误。 org.postgresql.util.PSQLException:错误:列“ var1”不存在

  1. 使用java.sql.PreparedStatement代替Statement,它是sql注入保存。
  2. 使用INSERT INTO players (name,fitore) VALUES (?,?)类的sql语句
  3. 通过语句方法设置参数:

    pstmt = conn.prepareStatement(QUERY_CREATE);

    pstmt.setString(1,var1);

    pstmt.setInt(2,0);

这有两个原因不起作用。

首先,var1是字符串文字中的一组字符,它与代码中的任何变量都没有关系。

其次,由于SQL调用中的“ var1”不在引号内,因此它正在寻找var1列来获取值。

使用PreparedStatement而不是Statement,它将使用代码中的参数更新sql字符串。

使用? 在您要从变量中插入值的SQL字符串中,以及PreparedStatement对象的.setType(index,value)函数之一,以按出现的顺序设置这些?的值。 请注意,索引始于ONE,而不是零。

它也更安全,因为您要接受用户输入,而又不想使用普通的旧Statement,因此会产生漏洞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM