我有一个sql数据库,我想向其中插入数据。下面是我的代码。执行java程序后,数据没有插入数据库,也没有出现错误。
Connection conn=null;
Statement stmt=null;
Scanner sc=new Scanner (System.in);
System.out.println("Enter Username");
String username=sc.next();
System.out.println("Enter Email");
String email=sc.next();
System.out.println("Enter Phone Number");
int phno=sc.nextInt();
System.out.println("Create a Password");
String password=sc.next();
try {
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sample","root","abc");
stmt=conn.createStatement();
String query1="select * from login_details";
String query2="insert into login_details(user_name,user_email,user_phone,user_password)values('"+username+"','"+email+"','"+phno+"','"+password+"')";
ResultSet rs=stmt.executeQuery(query1);
boolean status=false;
while(rs.next()) {
if(status=false) {
stmt.executeUpdate(query2);
System.out.println("Details Entered Successfully");
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
代码存在逻辑和安全问题。
您为条件中的变量赋予值,而不是检查它。你应该使用:
if (!status){...}
另一件事是,如果数据来自用户,您应该使用PreparedStatement 而不是Statement。抵御sql注入攻击。