我想将用户放置的信息存储到变量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”不存在
答案 0 :(得分:1)
INSERT INTO players (name,fitore) VALUES (?,?)
的sql语句通过语句方法设置参数:
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,而不是零。
它也更安全,因为您要接受用户输入而又不想使用普通的旧语句,因此会产生漏洞。