Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止重复。Java、SQL_Java_Mysql_Jdbc - Fatal编程技术网

如何防止重复。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)