[英]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”不存在
INSERT INTO players (name,fitore) VALUES (?,?)
类的sql语句 通过语句方法设置参数:
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.