从用户处获取数据,然后将其插入javadb

从用户处获取数据,然后将其插入javadb,java,sql,derby,javadb,Java,Sql,Derby,Javadb,若我有一个带有接口的代码,它从用户那个里获取数据,然后将这些数据存储在字符串类型的变量中,那个么如何将这个变量插入到数据库中呢?下面是我所说的一个例子: String s1="user@hotmail.com"; Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection con= DriverManager.getConnection("jdbc:derby://localhost:1527/SampleDB","app",

若我有一个带有接口的代码,它从用户那个里获取数据,然后将这些数据存储在字符串类型的变量中,那个么如何将这个变量插入到数据库中呢?下面是我所说的一个例子:

String s1="user@hotmail.com";
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con=
 DriverManager.getConnection("jdbc:derby://localhost:1527/SampleDB","app","app");
Statement st=con.createStatement();
st.executeUpdate("INSERT INTO EMAIL"+"(ID)"+"VALUES(s1)");
但这种方法不起作用,并且不会在数据库中插入字符串类型的变量


我如何才能做到这一点?

使用
PreparedStatemt
。你可以在中找到一个例子

为了防止所有查询都被参数化,并且
字符串连接不应用于创建动态SQL。

您的第一个问题是没有连接变量,名称是实际字符串的一部分。您的第二个问题是,您将用户提供的输入直接连接到SQL中,而不是使用准备好的语句——这会让您面临SQL注入,所以不要这样做。