如何防止重复。 Java,SQL
问题描述:
我尝试复制username
列中的条目,但结果总是在else
语句中,即数据已成功插入表中,根据if
语句不应该复制数据。顺便说一下String value1=username1.getText();
。如何防止重复。 Java,SQL
下面的代码:
String sq = "SELECT username FROM login where username = '"+value1+"'";
if (sq.equals(value1)){
JOptionPane.showMessageDialog(null,"username is already existed! please
create new username.");
}
else{
int k=st.executeUpdate("insert into
login(username,password,firstname,lastname,address,contactno)
values('"+value1+"','"+value2+"','"+value3+"','"+value4+"',
'"+value5+"','"+value6+"')");
JOptionPane.showMessageDialog(null,"Data is successfully saved");
}
答
平方米绝不等于值1,如果你只是把它分配给一个完整的SELECT语句:
String sq = "SELECT username FROM login where username = '"+value1+"'";
你所缺少的是对DB要求您平方字符串。
答
您只需创建SQL字符串并从不运行它(而不是将其与用户名进行比较,该用户名始终为false)。
你应该实际执行它并检查结果。 例如(错误处理和资源清理省略了简洁起见):
Connection conn = // Connect to the database...
PreparedStatement ps =
conn.prepareStatement("SELECT username FROM login where username = ?";
ps.setString(1, value1);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
JOptionPane.showMessageDialog
(null,"username is already existed! please create new username.");
}
+1
非常感谢!这是如此有帮助:) – shinbona
答
sq
包含查询(SQL代码)
String sq = "SELECT username FROM login where username = '"+value1+"'";
value1
包含的用户名的值(例如 “用户1”)。所以
sq.equals(value1)
将永远假
"SELECT username FROM login where username = '"+value1+"'" != value1
答
字符串基础知识:
String sq = "Something in double quotes"
分配Something
以SQ
而且
。String value1=username1.getText();
可能会得到一些其他的字符串,可以说,例如“根”
sq.equals(value1)
现在String类equals()
两个字符串(平方和值1)的方法检查内容。
如果不相等返回false,这发生在你的情况。
现在如何实现你的目标?人们已经回答说检查它。
我推荐你自己study
你有debbuged和检查两个字符串的值是否相等? – VedX
那么你从来没有真正执行'SELECT用户名'查询。如何在不运行查询的情况下获得结果集? –
@shinbona据我了解你的代码后,你还没有执行“sq”查询。您必须比较执行sq返回的结果 –