如何防止重复。Java、SQL
我尝试复制如何防止重复。Java、SQL,java,mysql,jdbc,Java,Mysql,Jdbc,我尝试复制username列中的条目,但结果总是出现在else语句中,即数据成功插入到表中,不应基于if语句进行复制。顺便说一下,stringvalue1=username1.getText() 代码如下: String sq = "SELECT username FROM login where username = '"+value1+"'"; if (sq.equals(value1)){ JOptionPane.showMessageDialog(null,"username is
username
列中的条目,但结果总是出现在else
语句中,即数据成功插入到表中,不应基于if
语句进行复制。顺便说一下,stringvalue1=username1.getText()代码>
代码如下:
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");
}
如果将sq分配给完整的SELECT语句,则sq永远不会等于value1:
String sq = "SELECT username FROM login where username = '"+value1+"'";
您缺少的是对sq字符串的DB请求。您只需创建SQL字符串,而从不运行它(相反,您将其与用户名进行比较,用户名始终为false)
您应该实际执行它并检查结果。
例如(为了简洁起见,省略了错误处理和资源清理):
sq
包含查询(sql代码)
value1
包含用户名值(例如“user1”)。所以
永远都是假的
"SELECT username FROM login where username = '"+value1+"'" != value1
字符串基础:
String sq = "Something in double quotes"
将某物分配给sq
及
可能会得到其他字符串,例如“root”
现在String类equals()
方法检查两个字符串(sq和value1)的内容
如果不相等,则返回false,这在您的情况下会发生
现在如何实现你的目标?人们已经回答了,检查一下
我向您自己推荐您是否对两个字符串的值进行了除错和检查?您实际上从未执行过SELECT username
查询。你怎么能不运行查询就得到结果集?@shinbona据我所知,在查看了你的代码后,你还没有执行“sq”查询。您必须比较通过执行SQ返回的结果,避免重复的最佳方法是在数据库中的用户名上添加一个唯一的键…首先选择和检查容易出现争用条件…添加到其他注释不要使用语句
使用PreparedStatement
非常感谢!这非常有用:)
sq.equals(value1)
"SELECT username FROM login where username = '"+value1+"'" != value1
String sq = "Something in double quotes"
String value1=username1.getText();
sq.equals(value1)