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

时间:2018-07-23 22:22:57

标签: java database postgresql

我想将用户放置的信息存储到变量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”不存在

2 个答案:

答案 0 :(得分:1)

  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);

答案 1 :(得分:0)

有两个原因不能解决问题。

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

第二,由于sql调用中的'var1'不在引号内,因此它正在寻找var1列来获取值。

使用PreparedStatement代替语句,它将使用代码中的参数更新sql字符串。

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

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