Java-向MySql数据库发送变量插入数据
我有一个简单的程序,其中我想获取用户提供的名字和姓氏,然后将它们输入MySql数据库。这两个变量称为Java-向MySql数据库发送变量插入数据,java,mysql,insert,Java,Mysql,Insert,我有一个简单的程序,其中我想获取用户提供的名字和姓氏,然后将它们输入MySql数据库。这两个变量称为first和last,它们将是简单的命令行提示,因此scanner first然后scanner last。然后取first和last并将它们添加到我的MySql语句中。这是我的代码,但由于某些原因,我无法获得正确的语法。在这个例子中,我使用stations,尽管我可以也会使用prepared语句。在现实世界中,我会使用预先准备好的语句,但即使是一个语句也可以用于此项目 这是我的一行代码。现在,代
first
和last
,它们将是简单的命令行提示,因此scanner first然后scanner last。然后取first和last并将它们添加到我的MySql语句中。这是我的代码,但由于某些原因,我无法获得正确的语法。在这个例子中,我使用stations,尽管我可以也会使用prepared语句。在现实世界中,我会使用预先准备好的语句,但即使是一个语句也可以用于此项目
这是我的一行代码。现在,代码确实与两个常量值Cathy和Jones一起工作。我希望这些都是变量
class AddStudent
{
public static void main (String[] args)
{
try
{
Connection conn = DriverManager.getConnection(url,user,pass);
Statement st = conn.createStatement();
Scanner first = new Scanner(System.in);
System.out.println(first.nextLine());
String SQL = "INSERT INTO test VALUES ('Cathy', 'Jones')";
st.executeUpdate(SQL);
conn.close();
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
}
private static String url = "jdbc:mysql://localhost:3306/registrar";
这么多潜在的错误
}
李>
测试李>
四,。
你的扫描仪坏了
Scanner scanner = new Scanner(System.in);
String first = scanner.nextLine();
String last = scanner.nextLine();
五,
应该是
String SQL = String.format("INSERT INTO test VALUES ('%s', '%s')", first, last);
st.executeUpdate(SQL);
这么多潜在的错误
缺少关闭类的关闭}
李>
您确定您的数据库正在运行吗李>
您是否创建了表测试李>
四,。
你的扫描仪坏了
Scanner scanner = new Scanner(System.in);
String first = scanner.nextLine();
String last = scanner.nextLine();
五,
应该是
String SQL = String.format("INSERT INTO test VALUES ('%s', '%s')", first, last);
st.executeUpdate(SQL);
给你,但不建议使用语句
Scanner first = new Scanner(System.in);
String f = first.nextLine();
Scanner last = new Scanner(System.in);
String l = last.nextLine();
String SQL = "INSERT INTO test VALUES ('" + f + "','" + l + "')";
st.executeUpdate(SQL);
建议如下:
PreparedStatement ps = conn.prepareStatement("INSERT INTO test VALUES (?, ?)");
ps.setString(1, f);
ps.setString(2, l);
ps.executeUpdate();
给你,但不建议使用语句
Scanner first = new Scanner(System.in);
String f = first.nextLine();
Scanner last = new Scanner(System.in);
String l = last.nextLine();
String SQL = "INSERT INTO test VALUES ('" + f + "','" + l + "')";
st.executeUpdate(SQL);
建议如下:
PreparedStatement ps = conn.prepareStatement("INSERT INTO test VALUES (?, ?)");
ps.setString(1, f);
ps.setString(2, l);
ps.executeUpdate();
最好的方法是以下方法。下面的代码实现了您想要的,并防止了SQL注入和由用户恶意或意外输入引起的其他问题
String firstName = "Cathy";
String lastName = "Jones";
String query= "INSERT INTO test VALUES (?,?)";
PreparedStatement stmt = mysqlConnection.prepareStatement(query);
stmt.setString(1,firstName);
stmt.setString(2,lastName);
stmt.executeUpdate(SQL);
最好的方法是下面的方法。下面的代码实现了您想要的,并防止了SQL注入和由用户恶意或意外输入引起的其他问题
String firstName = "Cathy";
String lastName = "Jones";
String query= "INSERT INTO test VALUES (?,?)";
PreparedStatement stmt = mysqlConnection.prepareStatement(query);
stmt.setString(1,firstName);
stmt.setString(2,lastName);
stmt.executeUpdate(SQL);
抱歉,是的,就代码而言,它是有效的,sql表会得到更新。我剪掉了一点代码。主要问题是如何将这些常量值更改为变量。从到目前为止的所有答案来看,谢谢大家,我想第一步应该是更改prepared StatementSry,是的,只要代码有效,sql表就会得到更新。我剪掉了一点代码。主要问题是如何将这些常量值更改为变量。从目前为止所有的答案来看,谢谢大家,我想第一步应该是改变事先准备好的陈述谢谢。是的,这就是我需要使用的方向。第一部分,字符串firstName设置为Cathy,然后我可以将Cathy更改为从所选输入中获得的变量?是的,您可以将值更改为firstName或lastName,然后重新运行代码。在上面的例子中,我的名字等于Cathy,姓氏等于Jones。。。。我不太明白你的意思,谢谢。是的,这就是我需要使用的方向。第一部分,字符串firstName设置为Cathy,然后我可以将Cathy更改为从所选输入中获得的变量?是的,您可以将值更改为firstName或lastName,然后重新运行代码。在上面的例子中,我的名字等于Cathy,姓氏等于Jones。。。。我不确定我是否理解你的评论谢谢!。。每个人都帮了大忙,是的,我想,我必须弄清楚准备好的语句的语法。在安全领域工作,但我真的不太会写代码。我知道Sql注入有多容易。这主要是一个测试项目,针对一个简单的学校班级,提供的帮助不多。谢谢!。。每个人都帮了大忙,是的,我想,我必须弄清楚准备好的语句的语法。在安全领域工作,但我真的不太会写代码。我知道Sql注入有多容易。这主要是一个测试项目,针对一个简单的学校班级,提供的帮助并不多。